From 097c4a7f160d4d4315a8b788239a9de9c6df385d Mon Sep 17 00:00:00 2001
From: hayden <2867571834@qq.com>
Date: Tue, 4 Apr 2023 09:28:35 +0800
Subject: [PATCH] 4.4
---
app/build.gradle | 3 +-
app/src/main/AndroidManifest.xml | 28 +++--
.../myapplication/IdolTagMainActivity.java | 105 ++++++++++++++++++
.../example/myapplication/LoginActivity.java | 9 +-
.../example/myapplication/MineActivity.java | 4 +
.../myapplication/RigsterActivity.java | 1 +
.../myapplication/adapter/IdolAdapter.java | 76 +++++++++++++
.../com/example/myapplication/bean/Tag.java | 30 +++++
.../myapplication/fragment/ShowFragment.java | 46 ++++++++
.../res/layout/activity_idol_tag_main.xml | 22 ++++
app/src/main/res/layout/fragment_show.xml | 14 +++
app/src/main/res/layout/item_layout.xml | 29 +++++
app/src/main/res/layout/mine.xml | 19 ++--
app/src/main/res/layout/user_login.xml | 2 +-
app/src/main/res/layout/user_rigster.xml | 2 +-
app/src/main/res/values/colors.xml | 1 +
app/src/main/res/values/strings.xml | 4 +-
17 files changed, 363 insertions(+), 32 deletions(-)
create mode 100644 app/src/main/java/com/example/myapplication/IdolTagMainActivity.java
create mode 100644 app/src/main/java/com/example/myapplication/adapter/IdolAdapter.java
create mode 100644 app/src/main/java/com/example/myapplication/bean/Tag.java
create mode 100644 app/src/main/java/com/example/myapplication/fragment/ShowFragment.java
create mode 100644 app/src/main/res/layout/activity_idol_tag_main.xml
create mode 100644 app/src/main/res/layout/fragment_show.xml
create mode 100644 app/src/main/res/layout/item_layout.xml
diff --git a/app/build.gradle b/app/build.gradle
index d524d30..350da04 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@ android {
defaultConfig {
applicationId "com.example.myapplication"
- minSdk 21
+ minSdk 25
targetSdk 33
versionCode 1
versionName "1.0"
@@ -33,6 +33,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
+ implementation 'androidx.wear.tiles:tiles-material:1.1.0-alpha04'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c919e0b..114e752 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,36 +7,34 @@
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/app_icon"
- android:roundIcon="@drawable/app_icon"
android:label="@string/app_name"
+ android:roundIcon="@drawable/app_icon"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:targetApi="31">
-
+
+
-
-
+
+
-
+
-
-
+
-
-
-
+ android:exported="true" />
-
-
-
+ android:exported="true" />
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/IdolTagMainActivity.java b/app/src/main/java/com/example/myapplication/IdolTagMainActivity.java
new file mode 100644
index 0000000..aeaff2f
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/IdolTagMainActivity.java
@@ -0,0 +1,105 @@
+package com.example.myapplication;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.FrameLayout;
+import android.widget.ListView;
+
+import com.example.myapplication.adapter.IdolAdapter;
+import com.example.myapplication.bean.Tag;
+import com.example.myapplication.fragment.ShowFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class IdolTagMainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
+ ListView mListview;
+ FrameLayout mFrame;
+ List mlist = new ArrayList();//Listview的数据集合
+ List fragmentList = new ArrayList<>(); //用于存放碎片,设置多个碎片的原因是右侧有很多显示都要fragment
+
+ IdolAdapter idolAdapter;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_idol_tag_main);
+ initView();
+ initDate();
+ }
+
+ //控件初始化
+ private void initView(){
+ mListview = findViewById(R.id.mListview);
+ mFrame = findViewById(R.id.mFrame);
+ }
+
+ //初始化数据
+ private void initDate(){
+ //初始化数据结合
+ listViewDate();
+ //加载fragment
+ addFragment();
+ //默认选中页面0
+ replese(0);
+ }
+
+ //切换fragment
+ private void replese(int position) {
+ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+ //隐藏所有的fragment
+ for(int i = 0; i < fragmentList.size(); i++){
+ Fragment fragment = fragmentList.get(i);
+ transaction.hide(fragment);
+ }
+ transaction.show(fragmentList.get(position));
+ transaction.commit();
+ }
+
+ //加载fragment
+ private void addFragment() {
+ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+ //new一个ShowFragment是为了调用里面的ShowFragment方法
+ ShowFragment showFragment = new ShowFragment();
+ for(int i = 0; i < mlist.size(); i++){
+ Fragment fragment = showFragment.getShowFragment(mlist.get(i).getType());
+ fragmentList.add(fragment);
+ }
+ for(int i = 0; i < fragmentList.size(); i++){
+ transaction.add(R.id.mFrame, fragmentList.get(i));
+ }
+ transaction.commit();
+ }
+
+
+ //初始化数据结合
+ private void listViewDate() {
+ mlist.add(new Tag("最佳男歌手"));
+ mlist.add(new Tag("最佳女歌手"));
+ mlist.add(new Tag("最佳男团"));
+ mlist.add(new Tag("最佳女团"));
+
+ idolAdapter = new IdolAdapter(mlist,this);
+ mListview.setAdapter(idolAdapter);
+ mListview.setOnItemClickListener(this);
+ }
+
+
+ @Override
+ public void onItemClick(AdapterView> adapterView, View view, int position, long l) {
+ //点击item切换fragment
+ replese(position);
+ for(int i = 0; i < mlist.size(); i++){
+ //先将所有的item标记为未被选中
+ mlist.get(i).setChecked(false);
+ }
+ //找出被选中的item,把idol中的的ischecked属性改为true
+ mlist.get(position).setChecked(true);
+ //刷新适配器
+ idolAdapter.notifyDataSetChanged();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/LoginActivity.java b/app/src/main/java/com/example/myapplication/LoginActivity.java
index 45f72f8..1a54171 100644
--- a/app/src/main/java/com/example/myapplication/LoginActivity.java
+++ b/app/src/main/java/com/example/myapplication/LoginActivity.java
@@ -15,7 +15,7 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_login);
- findViewById(R.id.login).setOnClickListener(this);
+ findViewById(R.id.login).setOnClickListener(this); //给login图标添加监听器
findViewById(R.id.rigster).setOnClickListener(this);
}
@@ -24,8 +24,11 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList
public void onClick(View view) {
if(view.getId() == R.id.rigster){
startActivity(new Intent(this,RigsterActivity.class));
- }else{
- startActivity(new Intent(this,MineActivity.class));
+ }else if(view.getId() == R.id.login){
+ //验证密码功能待补充
+ Intent intent = new Intent(this,MineActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
}
}
}
diff --git a/app/src/main/java/com/example/myapplication/MineActivity.java b/app/src/main/java/com/example/myapplication/MineActivity.java
index 10eee42..77508aa 100644
--- a/app/src/main/java/com/example/myapplication/MineActivity.java
+++ b/app/src/main/java/com/example/myapplication/MineActivity.java
@@ -13,11 +13,15 @@ public class MineActivity extends AppCompatActivity implements View.OnClickListe
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mine);
+ findViewById(R.id.vote).setOnClickListener(this);
findViewById(R.id.outload).setOnClickListener(this);
}
@Override
public void onClick(View view) {
+ if(view.getId() == R.id.vote){
+ startActivity(new Intent(this,IdolTagMainActivity.class));
+ }
if(view.getId() == R.id.outload){
//待修改,因為這樣數據還在
finish();
diff --git a/app/src/main/java/com/example/myapplication/RigsterActivity.java b/app/src/main/java/com/example/myapplication/RigsterActivity.java
index 689e221..88cb43d 100644
--- a/app/src/main/java/com/example/myapplication/RigsterActivity.java
+++ b/app/src/main/java/com/example/myapplication/RigsterActivity.java
@@ -100,6 +100,7 @@ public class RigsterActivity extends AppCompatActivity implements View.OnClickLi
//注册验证
public void validateRegister(){
Intent intent = new Intent(RigsterActivity.this,LoginActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
String username = usernameEdit.getText().toString();
String password = passEdit.getText().toString();
String surePassword = surePasswordEdit.getText().toString();
diff --git a/app/src/main/java/com/example/myapplication/adapter/IdolAdapter.java b/app/src/main/java/com/example/myapplication/adapter/IdolAdapter.java
new file mode 100644
index 0000000..5945c2d
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/adapter/IdolAdapter.java
@@ -0,0 +1,76 @@
+package com.example.myapplication.adapter;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.example.myapplication.bean.Tag;
+import com.example.myapplication.R;
+
+import java.util.List;
+
+public class IdolAdapter extends BaseAdapter {
+ List mList;
+ Context mContext;
+
+ public IdolAdapter(List mList, Context mContext) {
+ this.mList = mList;
+ this.mContext = mContext;
+ }
+
+ @Override
+ public int getCount() {
+ return mList !=null ? mList.size() : 0;
+ }
+
+ @Override
+ public Object getItem(int i) {
+ return null;
+ }
+
+ @Override
+ public long getItemId(int i) {
+ return 0;
+ }
+
+ @Override
+ public View getView(int i, View view, ViewGroup viewGroup) {
+ ViewHoder holder;
+ if(view == null){ //如果view = null,说明是第一次加载
+ holder = new ViewHoder();
+ //加载布局页面
+ view = LayoutInflater.from(mContext).inflate(R.layout.item_layout,null);
+ holder.tvText = view.findViewById(R.id.tv_text);
+ holder.tvLine = view.findViewById(R.id.tv_line);
+ holder.Menu = view.findViewById(R.id.menu);
+ view.setTag(holder);
+ }else{
+ holder = (ViewHoder) view.getTag();
+ }
+ //从数据集合中获取idol对象,判断idol中ischecked属性,判断是否被选中
+ if(mList.get(i).isChecked()){
+ holder.tvText.setTextColor(Color.BLUE);
+ holder.tvLine.setVisibility(View.VISIBLE);
+ holder.Menu.setBackgroundColor(Color.WHITE);
+ }else{
+ holder.tvText.setTextColor(Color.BLACK);
+ holder.tvLine.setVisibility(View.INVISIBLE);
+ holder.Menu.setBackgroundColor(Color.parseColor("#ebebeb"));
+ }
+ String type = mList.get(i).getType(); //取出对象idol里的数据
+ holder.tvText.setText(type);
+ return view;
+ }
+
+ //用于放item_layout里的控件
+ class ViewHoder{
+ TextView tvText;
+ TextView tvLine;
+ LinearLayout Menu;
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/bean/Tag.java b/app/src/main/java/com/example/myapplication/bean/Tag.java
new file mode 100644
index 0000000..7bdd391
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/bean/Tag.java
@@ -0,0 +1,30 @@
+package com.example.myapplication.bean;
+
+public class Tag {
+
+ //爱豆的种类名称
+ private String type;
+ //标记当前的type(item)是否被选中
+ private boolean isChecked;
+
+ public Tag(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public boolean isChecked() {
+ return isChecked;
+ }
+
+ public void setChecked(boolean checked) {
+ isChecked = checked;
+ }
+}
+
diff --git a/app/src/main/java/com/example/myapplication/fragment/ShowFragment.java b/app/src/main/java/com/example/myapplication/fragment/ShowFragment.java
new file mode 100644
index 0000000..c13a4a8
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/fragment/ShowFragment.java
@@ -0,0 +1,46 @@
+package com.example.myapplication.fragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.example.myapplication.R;
+
+public class ShowFragment extends Fragment {
+ TextView tvText;
+ String type;
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Bundle bundle = getArguments();
+ if(bundle != null ){
+ type = bundle.getString("type");
+ }
+ }
+
+
+
+ public static Fragment getShowFragment(String type){
+ ShowFragment showFragment = new ShowFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString("type",type);
+ showFragment.setArguments(bundle);
+ return showFragment;
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_show,null);
+ tvText = view.findViewById(R.id.tv_content);
+ tvText.setText(type);
+ return view;
+ }
+}
diff --git a/app/src/main/res/layout/activity_idol_tag_main.xml b/app/src/main/res/layout/activity_idol_tag_main.xml
new file mode 100644
index 0000000..45525a2
--- /dev/null
+++ b/app/src/main/res/layout/activity_idol_tag_main.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_show.xml b/app/src/main/res/layout/fragment_show.xml
new file mode 100644
index 0000000..d5414fc
--- /dev/null
+++ b/app/src/main/res/layout/fragment_show.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_layout.xml b/app/src/main/res/layout/item_layout.xml
new file mode 100644
index 0000000..375a712
--- /dev/null
+++ b/app/src/main/res/layout/item_layout.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/mine.xml b/app/src/main/res/layout/mine.xml
index 58cb99e..98c8f15 100644
--- a/app/src/main/res/layout/mine.xml
+++ b/app/src/main/res/layout/mine.xml
@@ -28,7 +28,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
@@ -72,7 +72,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp">