移除BaseWinBoLLActivity作为类库使用,应用需自定义基础窗口类。

This commit is contained in:
2026-01-13 16:45:31 +08:00
parent 80b4b87e95
commit 952c8d8017
6 changed files with 62 additions and 343 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Jan 13 16:27:34 HKT 2026
#Tue Jan 13 08:43:44 GMT 2026
stageCount=7
libraryProject=libaes
baseVersion=15.15
publishVersion=15.15.6
buildCount=0
buildCount=2
baseBetaVersion=15.15.7

View File

@@ -1,11 +1,9 @@
package cc.winboll.studio.aes;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.aes.R;
import cc.winboll.studio.libaes.activitys.BaseWinBoLLActivity;
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.models.APPInfo;

View File

@@ -0,0 +1,45 @@
package cc.winboll.studio.aes;
import android.app.Activity;
import android.os.Bundle;
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.libaes.utils.WinBoLLActivityManager;
/**
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
* @Date 2026/01/13 16:35
* @Describe BaseWinBollActivity 【继承AppCompatActivity保留核心能力不额外暴露方法】
* 继承链路BaseWinBoLLActivity → AppCompatActivity → FragmentActivityAppCompat能力天然继承可用
*/
public abstract class BaseWinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "BaseWinBoLLActivity";
protected volatile AESThemeBean.ThemeType mThemeType;
@Override
protected void onCreate(Bundle savedInstanceState) {
mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
super.onCreate(savedInstanceState);
WinBoLLActivityManager.getInstance().add(this);
}
@Override
protected void onDestroy() {
WinBoLLActivityManager.getInstance().registeRemove(this);
super.onDestroy();
}
// 子类必须实现getTag(),确保唯一标识
@Override
public abstract String getTag();
@Override
public Activity getActivity() {
return this;
}
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Jan 13 16:27:29 HKT 2026
#Tue Jan 13 08:43:44 GMT 2026
stageCount=7
libraryProject=libaes
baseVersion=15.15
publishVersion=15.15.6
buildCount=0
buildCount=2
baseBetaVersion=15.15.7

View File

@@ -1,333 +0,0 @@
package cc.winboll.studio.libaes.activitys;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.CallSuper;
import androidx.annotation.ContentView;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StyleRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.TaskStackBuilder;
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.libaes.utils.WinBoLLActivityManager;
/**
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
* @Date 2026/01/13 14:22
* @Describe BaseWinBollActivity 【完整透传AppCompatActivity所有公开方法】
* 继承链路BaseWinBoLLActivity → AppCompatActivity → FragmentActivity所有公开能力全暴露
*/
public abstract class BaseWinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "BaseWinBoLLActivity";
protected volatile AESThemeBean.ThemeType mThemeType;
@Override
protected void onCreate(Bundle savedInstanceState) {
mThemeType = getThemeType();
setThemeStyle();
super.onCreate(savedInstanceState);
WinBoLLActivityManager.getInstance().add(this);
//ToastUtils.show(getTag() + ": onCreate");
}
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()));
}
void setThemeStyle() {
//setTheme(AESThemeBean.getThemeStyle(getThemeType()));
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
}
@Override
protected void onDestroy() {
WinBoLLActivityManager.getInstance().registeRemove(this);
super.onDestroy();
}
// 子类必须实现getTag(),确保唯一标识
@Override
public abstract String getTag();
@Override
public Activity getActivity() {
return this;
}
// ===================== 完整暴露AppCompatActivity 所有公开方法(按类定义顺序)=====================
// @ContentView
// public BaseWinBoLLActivity(@LayoutRes int contentLayoutId) {
// super(contentLayoutId);
// }
@Override
public void addContentView(View view, ViewGroup.LayoutParams params) {
super.addContentView(view, params);
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
}
@Override
public void closeOptionsMenu() {
super.closeOptionsMenu();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
return super.dispatchKeyEvent(event);
}
@Override
public <T extends View> T findViewById(@IdRes int id) {
return super.findViewById(id);
}
@NonNull
@Override
public AppCompatDelegate getDelegate() {
return super.getDelegate();
}
@Nullable
@Override
public ActionBarDrawerToggle.Delegate getDrawerToggleDelegate() {
return super.getDrawerToggleDelegate();
}
@NonNull
@Override
public MenuInflater getMenuInflater() {
return super.getMenuInflater();
}
@Override
public Resources getResources() {
return super.getResources();
}
@Nullable
@Override
public ActionBar getSupportActionBar() {
return super.getSupportActionBar();
}
@Nullable
@Override
public Intent getSupportParentActivityIntent() {
return super.getSupportParentActivityIntent();
}
@Override
public void invalidateOptionsMenu() {
super.invalidateOptionsMenu();
}
@Override
public void onConfigurationChanged(@NonNull Configuration newMetrics) {
super.onConfigurationChanged(newMetrics);
}
@Override
public void onContentChanged() {
super.onContentChanged();
}
@Override
public void onCreateSupportNavigateUpTaskStack(@NonNull TaskStackBuilder builder) {
super.onCreateSupportNavigateUpTaskStack(builder);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
//
// @Override
// public final boolean onMenuItemSelected(int featureId, @NonNull MenuItem item) {
// return super.onMenuItemSelected(featureId, item);
// }
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
return super.onMenuOpened(featureId, menu);
}
@Override
protected void onNightModeChanged(int mode) {
super.onNightModeChanged(mode);
}
@Override
public void onPanelClosed(int featureId, @NonNull Menu menu) {
super.onPanelClosed(featureId, menu);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
@Override
protected void onPostResume() {
super.onPostResume();
}
@Override
public void onPrepareSupportNavigateUpTaskStack(@NonNull TaskStackBuilder builder) {
super.onPrepareSupportNavigateUpTaskStack(builder);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onStop() {
super.onStop();
}
@CallSuper
@Override
public void onSupportActionModeFinished(@NonNull ActionMode mode) {
super.onSupportActionModeFinished(mode);
}
@CallSuper
@Override
public void onSupportActionModeStarted(@NonNull ActionMode mode) {
super.onSupportActionModeStarted(mode);
}
@Override
@Deprecated
public void onSupportContentChanged() {
super.onSupportContentChanged();
}
@Override
public boolean onSupportNavigateUp() {
return super.onSupportNavigateUp();
}
@Override
protected void onTitleChanged(CharSequence title, int color) {
super.onTitleChanged(title, color);
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(@NonNull ActionMode.Callback callback) {
return super.onWindowStartingSupportActionMode(callback);
}
@Override
public void openOptionsMenu() {
super.openOptionsMenu();
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
}
@Override
public void setContentView(View view) {
super.setContentView(view);
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
super.setContentView(view, params);
}
@Override
public void setSupportActionBar(@Nullable androidx.appcompat.widget.Toolbar toolbar) {
super.setSupportActionBar(toolbar);
}
@Override
@Deprecated
public void setSupportProgress(int progress) {
super.setSupportProgress(progress);
}
@Override
@Deprecated
public void setSupportProgressBarIndeterminate(boolean indeterminate) {
super.setSupportProgressBarIndeterminate(indeterminate);
}
@Override
@Deprecated
public void setSupportProgressBarIndeterminateVisibility(boolean visible) {
super.setSupportProgressBarIndeterminateVisibility(visible);
}
@Override
@Deprecated
public void setSupportProgressBarVisibility(boolean visible) {
super.setSupportProgressBarVisibility(visible);
}
@Override
public void setTheme(@StyleRes int resId) {
super.setTheme(resId);
}
@Nullable
@Override
public ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback) {
super.startSupportActionMode(callback);
return null;
}
@Override
public void supportInvalidateOptionsMenu() {
super.supportInvalidateOptionsMenu();
}
@Override
public void supportNavigateUpTo(@NonNull Intent upIntent) {
super.supportNavigateUpTo(upIntent);
}
@Override
public boolean supportRequestWindowFeature(int featureId) {
return super.supportRequestWindowFeature(featureId);
}
@Override
public boolean supportShouldUpRecreateTask(@NonNull Intent targetIntent) {
return super.supportShouldUpRecreateTask(targetIntent);
}
}

View File

@@ -5,6 +5,7 @@ package cc.winboll.studio.libaes.activitys;
* @Date 2024/06/13 18:58:54
* @Describe 可以加入Fragment的有抽屉的活动窗口抽象类
*/
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -27,14 +28,16 @@ import cc.winboll.studio.libaes.models.AESThemeBean;
import cc.winboll.studio.libaes.models.DrawerMenuBean;
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.ADrawerMenuListView;
import cc.winboll.studio.libaes.views.ADsBannerView;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.LogUtils;
import com.baoyz.widget.PullRefreshLayout;
import java.util.ArrayList;
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity implements AdapterView.OnItemClickListener {
public abstract class DrawerFragmentActivity extends AppCompatActivity implements IWinBoLLActivity, AdapterView.OnItemClickListener {
public static final String TAG = "DrawerFragmentActivity";
@@ -61,15 +64,20 @@ public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity impleme
@Override
protected void onCreate(Bundle savedInstanceState) {
//mContext = this;
// mThemeType = getThemeType();
// setThemeStyle();
mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
super.onCreate(savedInstanceState);
WinBoLLActivityManager.getInstance().add(this);
mActivityType = initActivityType();
initRootView();
LogUtils.d(TAG, "onCreate end.");
}
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
@@ -77,6 +85,7 @@ public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity impleme
@Override
protected void onDestroy() {
WinBoLLActivityManager.getInstance().registeRemove(this);
super.onDestroy();
// 修复:释放广告资源,避免内存泄漏
ADsBannerView adsBannerView = findViewById(R.id.adsbanner);