From 9a885a58dedc943342f404679bed0d6b854c6aae Mon Sep 17 00:00:00 2001 From: ahbn0618 <3036729009@qq.com> Date: Fri, 11 Apr 2025 15:30:49 +0800 Subject: [PATCH] fix: setting --- .idea/gradle.xml | 5 +- .idea/misc.xml | 6 +- app/src/main/AndroidManifest.xml | 4 + .../activity/SettingsActivity.java | 61 +++++++++ .../adapter/SettingsAdapter.java | 118 ++++++++++++++++++ .../fragment/ProfileFragment.java | 9 ++ .../res/layout/activity_settings_group.xml | 2 +- .../res/layout/activity_settings_switch.xml | 17 ++- app/src/main/res/layout/fragment_profile.xml | 1 + 9 files changed, 212 insertions(+), 11 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index cb865f6..9e7641e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,7 +4,10 @@ + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index e00135a..0f86676 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,9 +1,5 @@ - - - - - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bd99a69..3050b6a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,10 @@ android:theme="@style/Theme.Fq" android:usesCleartextTraffic="true" tools:targetApi="31" > + + + diff --git a/app/src/main/java/com/fq/myapplication/activity/SettingsActivity.java b/app/src/main/java/com/fq/myapplication/activity/SettingsActivity.java index e69de29..be8e188 100644 --- a/app/src/main/java/com/fq/myapplication/activity/SettingsActivity.java +++ b/app/src/main/java/com/fq/myapplication/activity/SettingsActivity.java @@ -0,0 +1,61 @@ +package com.fq.myapplication.activity; + +import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import com.fq.myapplication.R; +import com.fq.myapplication.adapter.SettingsAdapter; +import com.fq.myapplication.bean.SettingItem; +import java.util.ArrayList; +import java.util.List; + +public class SettingsActivity extends AppCompatActivity { + + private RecyclerView recyclerView; + private SettingsAdapter adapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); + + recyclerView = findViewById(R.id.settings_list); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + + List items = new ArrayList<>(); + + items.add(new SettingItem(SettingItem.TYPE_GROUP_TITLE, "账号", null, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "账号与安全", R.drawable.ic_account, null, false)); + + items.add(new SettingItem(SettingItem.TYPE_GROUP_TITLE, "隐私", null, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "隐私设置", R.drawable.ic_privacy, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "推送设置", R.drawable.ic_push, null, false)); + + items.add(new SettingItem(SettingItem.TYPE_GROUP_TITLE, "功能设置", null, null, false)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "内容自动刷新", R.drawable.ic_refresh, null, true)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "展示右下角刷新按钮", R.drawable.ic_corner, null, true)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "保存视频带神弹幕", R.drawable.ic_danmaku, null, true)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "自动唤起声音电台", R.drawable.ic_radio, null, true)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "LIVE实况图展示振动效果", R.drawable.ic_vibration, null, true)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "开屏画面设置", R.drawable.ic_splash, null, false)); + + items.add(new SettingItem(SettingItem.TYPE_GROUP_TITLE, "内容设置", null, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "推荐中屏蔽的内容", R.drawable.ic_block, "去修改", false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "夜间模式", R.drawable.ic_night, "日间", false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "青少年模式", R.drawable.ic_teen, "去开启", false)); + + items.add(new SettingItem(SettingItem.TYPE_GROUP_TITLE, "关于", null, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "清除缓存", R.drawable.ic_cache, "7.51MB", false)); + items.add(new SettingItem(SettingItem.TYPE_SWITCH, "内测版本优先体验", R.drawable.ic_beta, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "检查更新", R.drawable.ic_update, "6.3.20 NEW!", false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "个人信息管理", R.drawable.ic_info, null, false)); + items.add(new SettingItem(SettingItem.TYPE_NORMAL, "关于最右", R.drawable.ic_about, null, false)); + + items.add(new SettingItem(SettingItem.TYPE_BUTTON, "切换账号", R.drawable.ic_cut, null, false)); + items.add(new SettingItem(SettingItem.TYPE_BUTTON, "退出登录", R.drawable.ic_back, null, false)); + + adapter = new SettingsAdapter(items); + recyclerView.setAdapter(adapter); + } +} diff --git a/app/src/main/java/com/fq/myapplication/adapter/SettingsAdapter.java b/app/src/main/java/com/fq/myapplication/adapter/SettingsAdapter.java index e69de29..3b43cd8 100644 --- a/app/src/main/java/com/fq/myapplication/adapter/SettingsAdapter.java +++ b/app/src/main/java/com/fq/myapplication/adapter/SettingsAdapter.java @@ -0,0 +1,118 @@ +package com.fq.myapplication.adapter; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.Switch; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; +import com.fq.myapplication.R; +import com.fq.myapplication.bean.SettingItem; +import java.util.List; + +public class SettingsAdapter extends RecyclerView.Adapter { + + private final List items; + + public SettingsAdapter(List items) { + this.items = items; + } + + @Override + public int getItemViewType(int position) { + return items.get(position).getType(); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + switch (viewType) { + case SettingItem.TYPE_GROUP_TITLE: + return new GroupTitleHolder(inflater.inflate(R.layout.activity_settings_group, parent, false)); + case SettingItem.TYPE_SWITCH: + return new SwitchHolder(inflater.inflate(R.layout.activity_settings_switch, parent, false)); + case SettingItem.TYPE_BUTTON: + return new ButtonHolder(inflater.inflate(R.layout.activity_settings_button, parent, false)); + default: + return new NormalHolder(inflater.inflate(R.layout.activity_settings_normal, parent, false)); + } + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + SettingItem item = items.get(position); + + if (holder instanceof GroupTitleHolder) { + ((GroupTitleHolder) holder).title.setText(item.getTitle()); + } else if (holder instanceof SwitchHolder) { + ((SwitchHolder) holder).title.setText(item.getTitle()); + ((SwitchHolder) holder).icon.setImageResource(item.getIconRes()); + ((SwitchHolder) holder).toggle.setChecked(item.isChecked()); + } else if (holder instanceof ButtonHolder) { + ((ButtonHolder) holder).title.setText(item.getTitle()); + ((ButtonHolder) holder).icon.setImageResource(item.getIconRes()); + } else if (holder instanceof NormalHolder) { + ((NormalHolder) holder).title.setText(item.getTitle()); + ((NormalHolder) holder).icon.setImageResource(item.getIconRes()); + if (item.getDesc() != null) { + ((NormalHolder) holder).desc.setText(item.getDesc()); + ((NormalHolder) holder).desc.setVisibility(View.VISIBLE); + } else { + ((NormalHolder) holder).desc.setVisibility(View.GONE); + } + } + } + + @Override + public int getItemCount() { + return items.size(); + } + + static class GroupTitleHolder extends RecyclerView.ViewHolder { + TextView title; + + public GroupTitleHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.group_title); + } + } + + static class SwitchHolder extends RecyclerView.ViewHolder { + TextView title; + ImageView icon; + Switch toggle; + + public SwitchHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + icon = itemView.findViewById(R.id.icon); + toggle = itemView.findViewById(R.id.toggle); + } + } + + static class NormalHolder extends RecyclerView.ViewHolder { + TextView title, desc; + ImageView icon; + + public NormalHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + icon = itemView.findViewById(R.id.icon); + desc = itemView.findViewById(R.id.desc); + } + } + + static class ButtonHolder extends RecyclerView.ViewHolder { + TextView title; + ImageView icon; + + public ButtonHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.title); + icon = itemView.findViewById(R.id.icon); + } + } +} diff --git a/app/src/main/java/com/fq/myapplication/fragment/ProfileFragment.java b/app/src/main/java/com/fq/myapplication/fragment/ProfileFragment.java index 9b1b4dc..ace6b4f 100644 --- a/app/src/main/java/com/fq/myapplication/fragment/ProfileFragment.java +++ b/app/src/main/java/com/fq/myapplication/fragment/ProfileFragment.java @@ -15,8 +15,10 @@ import android.widget.TextView; //import com.bumptech.glide.Glide; +import com.fq.myapplication.MainActivity; import com.fq.myapplication.R; import com.fq.myapplication.activity.LoginActivity; +import com.fq.myapplication.activity.SettingsActivity; public class ProfileFragment extends Fragment { @@ -48,7 +50,14 @@ public class ProfileFragment extends Fragment { TextView btnLogin = view.findViewById(R.id.btn_login); btnLogin.setOnClickListener(v -> navigateToLogin()); + ImageView settingIcon = view.findViewById(R.id.ic_setting); + settingIcon.setOnClickListener(v -> { + Intent intent = new Intent(getActivity(), SettingsActivity.class); + startActivity(intent); + }); + return view; + } // 跳转 public void navigateToLogin() { diff --git a/app/src/main/res/layout/activity_settings_group.xml b/app/src/main/res/layout/activity_settings_group.xml index 61c6b36..949f606 100644 --- a/app/src/main/res/layout/activity_settings_group.xml +++ b/app/src/main/res/layout/activity_settings_group.xml @@ -1,6 +1,6 @@ - + android:trackTint="#0792fe" + android:text="" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index 6206529..fc203fc 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -29,6 +29,7 @@ android:scaleType="fitCenter"/>