From d7bff511482d2eacbb4af0a8003c9b74aa4c2d9c Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 9 Dec 2025 14:47:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E4=BD=93=E8=A7=86=E5=9B=BE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=BB=E9=A2=98=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E8=8F=9C=E5=8D=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mymessagemanager/build.properties | 4 +- .../winboll/studio/mymessagemanager/App.java | 1 + .../activitys/AppSettingsActivity.java | 22 +++- .../activitys/BaseActivity.java | 114 ------------------ .../activitys/ComposeSMSActivity.java | 14 ++- .../activitys/MainActivity.java | 33 +++-- .../activitys/SMSActivity.java | 17 ++- .../activitys/SMSReceiveRuleActivity.java | 14 ++- .../activitys/SMSRecycleActivity.java | 16 ++- .../activitys/SharedJSONReceiveActivity.java | 14 ++- .../activitys/TTSPlayRuleActivity.java | 14 ++- .../activitys/WinBoLLActivity.java | 66 ++++++---- .../enums/ThemeStyleEnum.java | 93 ++++++++++++++ .../utils/PermissionUtil.java | 4 +- .../main/res/layout/activity_appsettings.xml | 18 +-- .../src/main/res/layout/activity_main.xml | 32 ++--- .../src/main/res/menu/toolbar_main_debug.xml | 12 ++ ...oolbar_main.xml => toolbar_main_first.xml} | 0 ...oolbar_main2.xml => toolbar_main_last.xml} | 13 -- .../src/main/res/values/styles.xml | 47 ++++++++ .../src/main/res/values/themes.xml | 90 -------------- 21 files changed, 340 insertions(+), 298 deletions(-) delete mode 100644 mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/BaseActivity.java create mode 100644 mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/enums/ThemeStyleEnum.java create mode 100644 mymessagemanager/src/main/res/menu/toolbar_main_debug.xml rename mymessagemanager/src/main/res/menu/{toolbar_main.xml => toolbar_main_first.xml} (100%) rename mymessagemanager/src/main/res/menu/{toolbar_main2.xml => toolbar_main_last.xml} (50%) create mode 100644 mymessagemanager/src/main/res/values/styles.xml delete mode 100644 mymessagemanager/src/main/res/values/themes.xml diff --git a/mymessagemanager/build.properties b/mymessagemanager/build.properties index e9e5c26..38a8450 100644 --- a/mymessagemanager/build.properties +++ b/mymessagemanager/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Dec 09 03:44:14 GMT 2025 +#Tue Dec 09 06:46:12 GMT 2025 stageCount=1 libraryProject= baseVersion=15.12 publishVersion=15.12.0 -buildCount=8 +buildCount=35 baseBetaVersion=15.12.1 diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java index 8edf7f4..c741d31 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/App.java @@ -31,6 +31,7 @@ public class App extends GlobalApplication { public void onCreate() { super.onCreate(); setIsDebugging(BuildConfig.DEBUG); + //setIsDebugging(false); // 初始化窗口管理类 WinBoLLActivityManager.init(this); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java index 9353e97..622a73b 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/AppSettingsActivity.java @@ -13,6 +13,7 @@ import android.widget.EditText; import android.widget.Switch; import android.widget.Toast; import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import cc.winboll.studio.libaes.views.AToolbar; import cc.winboll.studio.mymessagemanager.R; @@ -20,8 +21,9 @@ import cc.winboll.studio.mymessagemanager.activitys.AppSettingsActivity; import cc.winboll.studio.mymessagemanager.utils.AppConfigUtil; import cc.winboll.studio.mymessagemanager.utils.NotificationHelper; import cc.winboll.studio.mymessagemanager.utils.PermissionUtil; +import android.app.Activity; -public class AppSettingsActivity extends BaseActivity { +public class AppSettingsActivity extends WinBoLLActivity implements IWinBoLLActivity { public static final String TAG = "AppSettingsActivity"; @@ -35,6 +37,16 @@ public class AppSettingsActivity extends BaseActivity { EditText metProtectModerRefuseChars; EditText metProtectModerReplaceChars; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -59,13 +71,13 @@ public class AppSettingsActivity extends BaseActivity { mswSMSRecycleProtectMode = findViewById(R.id.activityappsettingsSwitch3); mswSMSRecycleProtectMode.setChecked(mAppConfigUtil.mAppConfigBean.isSMSRecycleProtectMode()); - + metProtectModerRefuseChars = findViewById(R.id.activityappsettingsEditText3); metProtectModerRefuseChars.setText(mAppConfigUtil.mAppConfigBean.getProtectModerRefuseChars()); - + metProtectModerReplaceChars = findViewById(R.id.activityappsettingsEditText4); metProtectModerReplaceChars.setText(mAppConfigUtil.mAppConfigBean.getProtectModerReplaceChars()); - + mAOHPCTCSeekBar = findViewById(R.id.activityappsettingsAOHPCTCSeekBar1); mAOHPCTCSeekBar.setThumb(getDrawable(R.drawable.cursor_pointer)); mAOHPCTCSeekBar.setThumbOffset(0); @@ -99,7 +111,7 @@ public class AppSettingsActivity extends BaseActivity { Toast.makeText(getApplication(), "应用已获得所需权限。", Toast.LENGTH_SHORT).show(); } } - + public void onCleanOldChannels(View view) { YesNoAlertDialog.show(this, "通知设置清理", "是否清理旧的通知设置?", new YesNoAlertDialog.OnDialogResultListener(){ @Override diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/BaseActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/BaseActivity.java deleted file mode 100644 index cca83b7..0000000 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/BaseActivity.java +++ /dev/null @@ -1,114 +0,0 @@ -package cc.winboll.studio.mymessagemanager.activitys; - -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.view.Menu; -import android.view.MenuItem; -import androidx.appcompat.app.AppCompatActivity; -import cc.winboll.studio.libaes.utils.AESThemeUtil; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.mymessagemanager.R; - -abstract public class BaseActivity extends AppCompatActivity { - - public static final String TAG = "BaseActivity"; - - IOnActivityMessageReceived mIOnActivityMessageReceived; - - @Override - protected void onCreate(Bundle savedInstanceState) { - //AppConfigUtil configUtil = AppConfigUtil.getInstance(this); - //setTheme(configUtil.mAppConfigBean.getAppThemeID()); - LogUtils.d(TAG, "AESThemeUtil.getThemeTypeID(this) is : " + Integer.toString(AESThemeUtil.getThemeTypeID(this))); - setTheme(AESThemeUtil.getThemeTypeID(this)); - super.onCreate(savedInstanceState); - } - - public void sendActivityMessage(Message msg) { - mHandler.sendMessage(msg); - } - - protected void setOnActivityMessageReceived(IOnActivityMessageReceived iOnActivityMessageReceived) { - mIOnActivityMessageReceived = iOnActivityMessageReceived; - } - - Handler mHandler = new Handler(){ - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - if (mIOnActivityMessageReceived != null) { - mIOnActivityMessageReceived.onActivityMessageReceived(msg); - } - } - }; - - protected interface IOnActivityMessageReceived { - void onActivityMessageReceived(Message msg); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - AESThemeUtil.inflateMenu(this, menu); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - /*if (AESThemeUtil.onAppCompatThemeItemSelected(this, item)) { - ToastUtils.show("onAppCompatThemeItemSelected"); - recreate(); - }*/ - - /*int nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT); - if (R.id.item_depththeme == item.getItemId()) { - nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEPTH); - AESThemeUtil.saveThemeStyleID(this, nThemeStyleID); - recreate(); - } else if (R.id.item_skytheme == item.getItemId()) { - nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.SKY); - AESThemeUtil.saveThemeStyleID(this, nThemeStyleID); - recreate(); - } else if (R.id.item_goldentheme == item.getItemId()) { - nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.GOLDEN); - AESThemeUtil.saveThemeStyleID(this, nThemeStyleID); - recreate(); - } else if (R.id.item_taotheme == item.getItemId()) { - nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.TAO); - AESThemeUtil.saveThemeStyleID(this, nThemeStyleID); - recreate(); - } else if (R.id.item_defaulttheme == item.getItemId()) { - nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT); - AESThemeUtil.saveThemeStyleID(this, nThemeStyleID); - recreate(); - }*/ - - //int nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT); - if (R.id.item_depththeme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyDepthAESTheme); - recreate(); - } else if (R.id.item_skytheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MySkyAESTheme); - recreate(); - } else if (R.id.item_goldentheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyGoldenAESTheme); - recreate(); - } else if (R.id.item_memortheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyMemorAESTheme); - recreate(); - } else if (R.id.item_taotheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyTaoAESTheme); - recreate(); - } else if (R.id.item_defaulttheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyAppTheme); - recreate(); - } else if (R.id.item_defaulttheme == item.getItemId()) { - AESThemeUtil.saveThemeStyleID(this, R.style.MyAppTheme); - recreate(); - } - //ToastUtils.show("nThemeStyleID " + Integer.toString(nThemeStyleID)); - - return super.onOptionsItemSelected(item); - } -} diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java index 08fe588..ea4acfe 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/ComposeSMSActivity.java @@ -18,6 +18,7 @@ import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.Toolbar; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.ToastUtils; @@ -29,8 +30,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import android.app.Activity; -public class ComposeSMSActivity extends BaseActivity { +public class ComposeSMSActivity extends WinBoLLActivity implements IWinBoLLActivity { public static String TAG = "ComposeSMSActivity"; public static String EXTRA_SMSBODY = "sms_body"; @@ -52,6 +54,16 @@ public class ComposeSMSActivity extends BaseActivity { private AOHPCTCSeekBar mAOHPCTCSeekBar; private RelativeLayout mrlContracts; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java index 3a96041..49df3e0 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/MainActivity.java @@ -11,9 +11,12 @@ import android.view.View; import android.widget.Button; import android.widget.ScrollView; import androidx.appcompat.widget.Toolbar; +import cc.winboll.studio.libaes.utils.AESThemeUtil; +import cc.winboll.studio.libaes.utils.DevelopUtils; import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libaes.views.ADsBannerView; import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.mymessagemanager.App; import cc.winboll.studio.mymessagemanager.BuildConfig; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.MainActivity; @@ -30,7 +33,7 @@ import cc.winboll.studio.mymessagemanager.views.PhoneListViewForScrollView; import com.baoyz.widget.PullRefreshLayout; import java.util.ArrayList; -public class MainActivity extends BaseActivity { +public class MainActivity extends WinBoLLActivity { public final static String TAG = "MainActivity"; @@ -277,10 +280,15 @@ public class MainActivity extends BaseActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - //return super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.toolbar_main, menu); - super.onCreateOptionsMenu(menu); - getMenuInflater().inflate(R.menu.toolbar_main2, menu); + getMenuInflater().inflate(R.menu.toolbar_main_first, menu); + // 主题菜单 + AESThemeUtil.inflateMenu(this, menu); + // 调试工具菜单 + if (App.isDebugging()) { + DevelopUtils.inflateMenu(this, menu); + getMenuInflater().inflate(R.menu.toolbar_main_debug, menu); + } + getMenuInflater().inflate(R.menu.toolbar_main_last, menu); return true; } @@ -295,7 +303,12 @@ public class MainActivity extends BaseActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { int nItemId = item.getItemId(); - if (nItemId == R.id.app_ttsrule) { + int menuItemId = item.getItemId(); + if (AESThemeUtil.onAppThemeItemSelected(this, item)) { + recreate(); + } if (DevelopUtils.onDevelopItemSelected(this, item)) { + LogUtils.d(TAG, String.format("onOptionsItemSelected item.getItemId() %d ", item.getItemId())); + } else if (nItemId == R.id.app_ttsrule) { Intent i = new Intent(MainActivity.this, TTSPlayRuleActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); @@ -307,16 +320,10 @@ public class MainActivity extends BaseActivity { Intent i = new Intent(MainActivity.this, AppSettingsActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); - } else if (nItemId == R.id.app_log) { - WinBoLLActivityManager.getInstance().startLogActivity(this); - } else if (nItemId == R.id.app_unittest) { + } else if (nItemId == R.id.app_unittest) { Intent i = new Intent(MainActivity.this, UnitTestActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); - } else if (nItemId == R.id.app_crashtest) { - for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) { - getString(i); - } } else if (nItemId == R.id.app_about) { Intent i = new Intent(MainActivity.this, AboutActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSActivity.java index 41c276f..6bc9542 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSActivity.java @@ -7,10 +7,8 @@ import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.os.Handler; -import android.os.Message; import android.view.View; import android.view.ViewTreeObserver; -import android.view.inputmethod.InputMethodManager; import android.widget.AbsListView; import android.widget.EditText; import android.widget.LinearLayout; @@ -19,6 +17,7 @@ import android.widget.TextView; import android.widget.Toast; import android.widget.Toolbar; import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.libaes.views.AOHPCTCSeekBar; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.adapters.SMSArrayAdapter; @@ -27,9 +26,9 @@ import cc.winboll.studio.mymessagemanager.utils.SMSUtil; import cc.winboll.studio.mymessagemanager.utils.ViewUtil; import cc.winboll.studio.mymessagemanager.views.BottomPositionFixedScrollView; import cc.winboll.studio.mymessagemanager.views.SMSListViewForScrollView; -import java.lang.ref.WeakReference; +import android.app.Activity; -public class SMSActivity extends BaseActivity { +public class SMSActivity extends WinBoLLActivity implements IWinBoLLActivity { public static String TAG = "SMSActivity"; public static final String ACTION_NOTIFY_SMS_CHANGED = "cc.winboll.studio.mymessagemanager.activitys.SMSActivity.ACTION_NOTIFY_SMS_CHANGED"; public static final String EXTRA_PHONE = "Phone"; @@ -45,6 +44,16 @@ public class SMSActivity extends BaseActivity { Handler mSetFocusHandler; private boolean isImeVisible = false; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSReceiveRuleActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSReceiveRuleActivity.java index 7e544c1..e1a2b25 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSReceiveRuleActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSReceiveRuleActivity.java @@ -21,6 +21,7 @@ import android.widget.Toast; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.mymessagemanager.App; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.SMSReceiveRuleActivity; @@ -29,8 +30,9 @@ import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.utils.FileUtil; import cc.winboll.studio.mymessagemanager.utils.SMSReceiveRuleUtil; import com.baoyz.widget.PullRefreshLayout; +import android.app.Activity; -public class SMSReceiveRuleActivity extends BaseActivity { +public class SMSReceiveRuleActivity extends WinBoLLActivity implements IWinBoLLActivity { public static final String TAG = "SMSReceiveRuleActivity"; @@ -43,6 +45,16 @@ public class SMSReceiveRuleActivity extends BaseActivity { SMSAcceptRuleBean mSMSAcceptRuleBeanAdd; SMSAcceptRuleArrayAdapter mSMSAcceptRuleArrayAdapter; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java index fa8ea78..c8ce545 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SMSRecycleActivity.java @@ -5,6 +5,7 @@ package cc.winboll.studio.mymessagemanager.activitys; * @Date 2024/07/19 16:56:18 * @Describe 短信回收站 */ +import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; @@ -12,6 +13,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.SMSRecycleActivity; import cc.winboll.studio.mymessagemanager.adapters.SMSRecycleAdapter; @@ -19,7 +21,7 @@ import cc.winboll.studio.mymessagemanager.utils.SMSRecycleUtil; import com.baoyz.widget.PullRefreshLayout; import java.io.File; -public class SMSRecycleActivity extends BaseActivity { +public class SMSRecycleActivity extends WinBoLLActivity implements IWinBoLLActivity { public static final String TAG = "SMSRecycleActivity"; @@ -27,6 +29,16 @@ public class SMSRecycleActivity extends BaseActivity { RecyclerView mRecyclerView; SMSRecycleAdapter mSMSRecycleAdapter; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -74,7 +86,7 @@ public class SMSRecycleActivity extends BaseActivity { } return true; } - + YesNoAlertDialog.OnDialogResultListener mDeleteListener = new YesNoAlertDialog.OnDialogResultListener() { @Override diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java index f5a81a0..9f215b9 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/SharedJSONReceiveActivity.java @@ -8,6 +8,7 @@ import android.widget.TextView; import android.widget.Toast; import android.widget.Toolbar; import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.activitys.SMSReceiveRuleActivity; import cc.winboll.studio.mymessagemanager.activitys.SharedJSONReceiveActivity; @@ -16,13 +17,24 @@ import cc.winboll.studio.mymessagemanager.beans.SMSAcceptRuleBean; import cc.winboll.studio.mymessagemanager.beans.TTSPlayRuleBean; import cc.winboll.studio.mymessagemanager.utils.UriUtil; import java.util.ArrayList; +import android.app.Activity; -public class SharedJSONReceiveActivity extends BaseActivity { +public class SharedJSONReceiveActivity extends WinBoLLActivity implements IWinBoLLActivity { public static final String TAG = "SharedJSONReceive"; Toolbar mToolbar; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/TTSPlayRuleActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/TTSPlayRuleActivity.java index cec628c..3423b10 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/TTSPlayRuleActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/TTSPlayRuleActivity.java @@ -16,13 +16,15 @@ import android.widget.Toast; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.mymessagemanager.R; import cc.winboll.studio.mymessagemanager.adapters.TTSRuleBeanRecyclerViewAdapter; import cc.winboll.studio.mymessagemanager.beans.TTSPlayRuleBean; import cc.winboll.studio.mymessagemanager.utils.FileUtil; import cc.winboll.studio.mymessagemanager.utils.TTSPlayRuleUtil; +import android.app.Activity; -public class TTSPlayRuleActivity extends BaseActivity { +public class TTSPlayRuleActivity extends WinBoLLActivity implements IWinBoLLActivity { public static final String TAG = "TTSPlayRuleActivity"; @@ -39,6 +41,16 @@ public class TTSPlayRuleActivity extends BaseActivity { EditText metPatternText; EditText metCurrentTTSRuleText; + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java index 979603b..dd65f3b 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/activitys/WinBoLLActivity.java @@ -7,17 +7,18 @@ package cc.winboll.studio.mymessagemanager.activitys; */ import android.app.Activity; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.view.MenuItem; import androidx.appcompat.app.AppCompatActivity; import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; -import cc.winboll.studio.libaes.models.AESThemeBean; -import cc.winboll.studio.libaes.utils.AESThemeUtil; +import cc.winboll.studio.mymessagemanager.enums.ThemeStyleEnum; public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity { public static final String TAG = "WinBoLLActivity"; - protected volatile AESThemeBean.ThemeType mThemeType; + IOnActivityMessageReceived mIOnActivityMessageReceived; @Override public Activity getActivity() { @@ -31,30 +32,51 @@ public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivi @Override protected void onCreate(Bundle savedInstanceState) { - mThemeType = getThemeType(); - setThemeStyle(); + // 1. 优先读取SP中保存的主题(必须在setContentView前调用!) + ThemeStyleEnum savedTheme = ThemeStyleEnum.getThemeFromSP(this); + // 2. 设置主题 + setTheme(savedTheme.getStyleId()); super.onCreate(savedInstanceState); } - AESThemeBean.ThemeType getThemeType() { - /*SharedPreferences sharedPreferences = getSharedPreferences( - SHAREDPREFERENCES_NAME, MODE_PRIVATE); - return AESThemeBean.ThemeType.values()[((sharedPreferences.getInt(DRAWER_THEME_TYPE, AESThemeBean.ThemeType.DEFAULT.ordinal())))]; - */ - return AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext())); + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int selectedMenuId = item.getItemId(); + // 1. 根据菜单ID获取对应的主题枚举 + ThemeStyleEnum selectedTheme = ThemeStyleEnum.getThemeByMenuId(selectedMenuId); + + if (selectedTheme != null) { + // 2. 调用枚举自带方法保存主题到SP(替代AESThemeUtil) + ThemeStyleEnum.saveThemeToSP(this, selectedTheme); + recreate(); // 重建Activity生效主题 + } else if (selectedMenuId == android.R.id.home) { + finish(); + } else { + return super.onOptionsItemSelected(item); + } + return true; + } + + protected interface IOnActivityMessageReceived { + void onActivityMessageReceived(Message msg); } - void setThemeStyle() { - //setTheme(AESThemeBean.getThemeStyle(getThemeType())); - setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext())); + public void sendActivityMessage(Message msg) { + mHandler.sendMessage(msg); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if(item.getItemId() == android.R.id.home) { - finish(); - return true; + + protected void setOnActivityMessageReceived(IOnActivityMessageReceived iOnActivityMessageReceived) { + mIOnActivityMessageReceived = iOnActivityMessageReceived; + } + + Handler mHandler = new Handler(){ + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (mIOnActivityMessageReceived != null) { + mIOnActivityMessageReceived.onActivityMessageReceived(msg); + } } - return super.onOptionsItemSelected(item); - } + }; } diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/enums/ThemeStyleEnum.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/enums/ThemeStyleEnum.java new file mode 100644 index 0000000..417174f --- /dev/null +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/enums/ThemeStyleEnum.java @@ -0,0 +1,93 @@ +package cc.winboll.studio.mymessagemanager.enums; + +import android.content.Context; +import android.content.SharedPreferences; +import androidx.annotation.StyleRes; +import cc.winboll.studio.mymessagemanager.R; + +/** + * @Author ZhanGSKen&豆包大模型 + * @Date 2025/12/09 14:15 + * @Describe 主题风格枚举类 - 含SharedPreferences存取方法(主题持久化) + */ +public enum ThemeStyleEnum { + // 主题枚举项(与原逻辑完全对应) + DEPTH_THEME(R.id.item_depththeme, R.style.MyDepthAESTheme), + SKY_THEME(R.id.item_skytheme, R.style.MySkyAESTheme), + GOLDEN_THEME(R.id.item_goldentheme, R.style.MyGoldenAESTheme), + MEMOR_THEME(R.id.item_memortheme, R.style.MyMemorAESTheme), + TAO_THEME(R.id.item_taotheme, R.style.MyTaoAESTheme), + DEFAULT_THEME(R.id.item_defaulttheme, R.style.MyAppTheme); + + // ---------------------- 基础字段(原逻辑保留) ---------------------- + private final int menuId; + @StyleRes + private final int styleId; + + ThemeStyleEnum(int menuId, @StyleRes int styleId) { + this.menuId = menuId; + this.styleId = styleId; + } + + public int getMenuId() { + return menuId; + } + + @StyleRes + public int getStyleId() { + return styleId; + } + + // ---------------------- SharedPreferences 配置(新增) ---------------------- + // SP文件名:主题配置(建议与枚举类关联,便于查找) + private static final String SP_THEME_NAME = "sp_theme_config"; + // SP存储键:当前选中的主题Style ID + private static final String KEY_CURRENT_THEME_STYLE_ID = "current_theme_style_id"; + + // ---------------------- 核心方法:保存主题到SP(新增) ---------------------- + /** + * 保存当前选中的主题Style ID到SharedPreferences + * @param context 上下文(Activity/Application均可) + * @param theme 要保存的主题枚举项(如ThemeStyleEnum.DEFAULT_THEME) + */ + public static void saveThemeToSP(Context context, ThemeStyleEnum theme) { + if (context == null || theme == null) return; + // 获取SP实例(私有模式,仅当前App可访问) + SharedPreferences sp = context.getSharedPreferences(SP_THEME_NAME, Context.MODE_PRIVATE); + // 存入主题对应的Style ID + sp.edit().putInt(KEY_CURRENT_THEME_STYLE_ID, theme.getStyleId()).apply(); + } + + // ---------------------- 核心方法:从SP读取主题(新增) ---------------------- + /** + * 从SharedPreferences读取保存的主题,无存储时返回默认主题 + * @param context 上下文 + * @return 保存的主题枚举项(默认返回DEFAULT_THEME) + */ + public static ThemeStyleEnum getThemeFromSP(Context context) { + if (context == null) return DEFAULT_THEME; + // 读取SP中保存的Style ID + SharedPreferences sp = context.getSharedPreferences(SP_THEME_NAME, Context.MODE_PRIVATE); + int savedStyleId = sp.getInt(KEY_CURRENT_THEME_STYLE_ID, DEFAULT_THEME.getStyleId()); + + // 根据保存的Style ID匹配对应的枚举项 + for (ThemeStyleEnum theme : values()) { + if (theme.getStyleId() == savedStyleId) { + return theme; + } + } + // 无匹配时返回默认主题(防止异常) + return DEFAULT_THEME; + } + + // ---------------------- 辅助方法:根据菜单ID获取主题(原逻辑保留并优化) ---------------------- + public static ThemeStyleEnum getThemeByMenuId(int menuId) { + for (ThemeStyleEnum theme : values()) { + if (theme.getMenuId() == menuId) { + return theme; + } + } + return null; + } +} + diff --git a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PermissionUtil.java b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PermissionUtil.java index e8057ff..4ab5071 100644 --- a/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PermissionUtil.java +++ b/mymessagemanager/src/main/java/cc/winboll/studio/mymessagemanager/utils/PermissionUtil.java @@ -12,7 +12,7 @@ import android.content.Intent; import android.net.Uri; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.mymessagemanager.R; -import cc.winboll.studio.mymessagemanager.activitys.BaseActivity; +import cc.winboll.studio.mymessagemanager.activitys.WinBoLLActivity; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; @@ -184,7 +184,7 @@ public class PermissionUtil { // current activity //MainActivity.this.finish(); AppGoToSettingsUtil appGoToSettingsUtil = new AppGoToSettingsUtil(); - appGoToSettingsUtil.GoToSetting((BaseActivity)context); + appGoToSettingsUtil.GoToSetting((WinBoLLActivity)context); } }) .setNegativeButton("Exit", new DialogInterface.OnClickListener() { diff --git a/mymessagemanager/src/main/res/layout/activity_appsettings.xml b/mymessagemanager/src/main/res/layout/activity_appsettings.xml index 82f3c8f..9baaf80 100644 --- a/mymessagemanager/src/main/res/layout/activity_appsettings.xml +++ b/mymessagemanager/src/main/res/layout/activity_appsettings.xml @@ -250,20 +250,12 @@ - - - - - - + android:layout_width="match_parent" + android:layout_height="wrap_content"/> diff --git a/mymessagemanager/src/main/res/layout/activity_main.xml b/mymessagemanager/src/main/res/layout/activity_main.xml index 489e997..54983a1 100644 --- a/mymessagemanager/src/main/res/layout/activity_main.xml +++ b/mymessagemanager/src/main/res/layout/activity_main.xml @@ -3,14 +3,11 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#FFFFFFFF" - android:layout_margin="0dp"> + android:layout_height="match_parent"> - + android:layout_weight="1.0"> - + android:id="@+id/activitymainPullRefreshLayout1"> - + android:layout_height="match_parent" + android:id="@+id/activitymainScrollView1"> - + - + + + + + + + + + + + + + diff --git a/mymessagemanager/src/main/res/menu/toolbar_main.xml b/mymessagemanager/src/main/res/menu/toolbar_main_first.xml similarity index 100% rename from mymessagemanager/src/main/res/menu/toolbar_main.xml rename to mymessagemanager/src/main/res/menu/toolbar_main_first.xml diff --git a/mymessagemanager/src/main/res/menu/toolbar_main2.xml b/mymessagemanager/src/main/res/menu/toolbar_main_last.xml similarity index 50% rename from mymessagemanager/src/main/res/menu/toolbar_main2.xml rename to mymessagemanager/src/main/res/menu/toolbar_main_last.xml index e60fde9..536d15f 100644 --- a/mymessagemanager/src/main/res/menu/toolbar_main2.xml +++ b/mymessagemanager/src/main/res/menu/toolbar_main_last.xml @@ -1,19 +1,6 @@ - - - - - - - diff --git a/mymessagemanager/src/main/res/values/styles.xml b/mymessagemanager/src/main/res/values/styles.xml new file mode 100644 index 0000000..17c3acc --- /dev/null +++ b/mymessagemanager/src/main/res/values/styles.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + diff --git a/mymessagemanager/src/main/res/values/themes.xml b/mymessagemanager/src/main/res/values/themes.xml deleted file mode 100644 index ca29f0b..0000000 --- a/mymessagemanager/src/main/res/values/themes.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - -