Compare commits

...

3 Commits

Author SHA1 Message Date
069e5a66ad <appbase>APK 15.15.16 release Publish. 2026-04-06 20:25:21 +08:00
e9a1dca8ca 应用调试功能切换Logo准备完成。 2026-04-06 20:23:37 +08:00
7e3a3d1446 添加调试状态切换Logo控件 2026-04-06 19:42:34 +08:00
7 changed files with 130 additions and 30 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed Mar 25 20:52:43 HKT 2026 #Mon Apr 06 20:25:21 HKT 2026
stageCount=16 stageCount=17
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.15 baseVersion=15.15
publishVersion=15.15.15 publishVersion=15.15.16
buildCount=0 buildCount=0
baseBetaVersion=15.15.16 baseBetaVersion=15.15.17

View File

@@ -21,9 +21,12 @@ public class App extends GlobalApplication {
*/ */
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); // 调用父类初始化逻辑(如基础库配置、全局上下文设置) super.onCreate();
//setIsDebugging(false); // 如果应用不在调试状态,就根据编译类型设置调试状态
if (isDebugging() != true) {
setIsDebugging(BuildConfig.DEBUG); setIsDebugging(BuildConfig.DEBUG);
}
// 初始化 Toast 工具类(传入应用全局上下文,确保 Toast 可在任意地方调用) // 初始化 Toast 工具类(传入应用全局上下文,确保 Toast 可在任意地方调用)
ToastUtils.init(getApplicationContext()); ToastUtils.init(getApplicationContext());
} }

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed Mar 25 20:52:43 HKT 2026 #Mon Apr 06 20:25:21 HKT 2026
stageCount=16 stageCount=17
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.15 baseVersion=15.15
publishVersion=15.15.15 publishVersion=15.15.16
buildCount=0 buildCount=0
baseBetaVersion=15.15.16 baseBetaVersion=15.15.17

View File

@@ -76,10 +76,11 @@ public class AboutView extends LinearLayout {
private EditText metDevUserPassword; private EditText metDevUserPassword;
// ===================================== 页面视图控件 ===================================== // ===================================== 页面视图控件 =====================================
private ImageView ivAppIcon; private DebugSwitchImageView ivAppIcon;
private TextView tvAppNameVersion; private TextView tvAppNameVersion;
private TextView tvAppDesc; private TextView tvAppDesc;
private LinearLayout llFunctionContainer; private LinearLayout llFunctionContainer;
private ImageButton ibSebugStepOver;
private ImageButton ibSigngetDialog; private ImageButton ibSigngetDialog;
private ImageButton ibWinBoLLHostDialog; private ImageButton ibWinBoLLHostDialog;
@@ -193,10 +194,15 @@ public class AboutView extends LinearLayout {
tvAppDesc = findViewById(R.id.tv_app_desc); tvAppDesc = findViewById(R.id.tv_app_desc);
llFunctionContainer = findViewById(R.id.ll_function_container); llFunctionContainer = findViewById(R.id.ll_function_container);
// 功能按钮绑定 // 功能按钮绑定
ibSebugStepOver = findViewById(R.id.ib_debug_step_over);
ibSigngetDialog = findViewById(R.id.ib_signgetdialog); ibSigngetDialog = findViewById(R.id.ib_signgetdialog);
ibWinBoLLHostDialog = findViewById(R.id.ib_winbollhostdialog); ibWinBoLLHostDialog = findViewById(R.id.ib_winbollhostdialog);
// 调试地址按钮动态显隐
// 调试按钮统一只在调试模式显示
ibWinBoLLHostDialog.setVisibility(GlobalApplication.isDebugging() ? View.VISIBLE : View.GONE); ibWinBoLLHostDialog.setVisibility(GlobalApplication.isDebugging() ? View.VISIBLE : View.GONE);
//ibSigngetDialog.setVisibility(GlobalApplication.isDebugging() ? View.VISIBLE : View.GONE);
ibSebugStepOver.setVisibility(GlobalApplication.isDebugging() ? View.VISIBLE : View.GONE);
// 绑定按钮点击事件 // 绑定按钮点击事件
setBtnClickListener(); setBtnClickListener();
LogUtils.d(TAG, "initViewFromXml():布局加载+控件绑定+事件初始化完成"); LogUtils.d(TAG, "initViewFromXml():布局加载+控件绑定+事件初始化完成");
@@ -312,6 +318,16 @@ public class AboutView extends LinearLayout {
*/ */
private void setBtnClickListener() { private void setBtnClickListener() {
LogUtils.d(TAG, "setBtnClickListener():开始绑定功能按钮点击事件"); LogUtils.d(TAG, "setBtnClickListener():开始绑定功能按钮点击事件");
// 取消调试状态按钮
ibSebugStepOver.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LogUtils.d(TAG, "ibSebugStepOver onClick取消调试状态按钮已点击");
GlobalApplication.setIsDebugging(false);
GlobalApplication.saveDebugStatus(GlobalApplication.getInstance());
ToastUtils.show("已取消调试状态,重启应用可生效。");
}
});
// 正版校验弹窗 // 正版校验弹窗
ibSigngetDialog.setOnClickListener(new OnClickListener() { ibSigngetDialog.setOnClickListener(new OnClickListener() {
@Override @Override

View File

@@ -0,0 +1,61 @@
package cc.winboll.studio.libappbase.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
/**
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
* @Date 2026/04/06 19:32
* @Describe 具有调试模式切换功能的应用Logo控件连续点击10次弹出提示
*/
public class DebugSwitchImageView extends ImageView {
public static final String TAG = "DebugSwitchImageView";
// 连续点击计数
private int mClickCount = 0;
// 目标点击次数
private static final int TARGET_CLICK_COUNT = 10;
public DebugSwitchImageView(Context context) {
super(context);
init();
}
public DebugSwitchImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public DebugSwitchImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public DebugSwitchImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mClickCount++;
if (mClickCount == TARGET_CLICK_COUNT) {
// 达到10次弹出Toast
Toast.makeText(getContext(), "连续点击已达到10次现在开启应用调试功能。", Toast.LENGTH_SHORT).show();
GlobalApplication.setIsDebugging(true);
GlobalApplication.saveDebugStatus(GlobalApplication.getInstance());
// 重置计数,可再次触发
mClickCount = 0;
}
}
});
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="#ff000000"
android:pathData="M19,7H16.19C15.74,6.2 15.12,5.5 14.37,5L16,3.41L14.59,2L12.42,4.17C11.96,4.06 11.5,4 11,4S10.05,4.06 9.59,4.17L7.41,2L6,3.41L7.62,5C6.87,5.5 6.26,6.21 5.81,7H3V9H5.09C5.03,9.33 5,9.66 5,10V11H3V13H5V14C5,14.34 5.03,14.67 5.09,15H3V17H5.81C7.26,19.5 10.28,20.61 13,19.65V19C13,18.43 13.09,17.86 13.25,17.31C12.59,17.76 11.8,18 11,18C8.79,18 7,16.21 7,14V10C7,7.79 8.79,6 11,6S15,7.79 15,10V14C15,14.19 15,14.39 14.95,14.58C15.54,14.04 16.24,13.62 17,13.35V13H19V11H17V10C17,9.66 16.97,9.33 16.91,9H19V7M13,9V11H9V9H13M13,13V15H9V13H13M16,16H22V22H16V16Z"/>
</vector>

View File

@@ -14,7 +14,7 @@
android:paddingRight="16dp" android:paddingRight="16dp"
android:paddingBottom="32dp"> android:paddingBottom="32dp">
<ImageView <cc.winboll.studio.libappbase.views.DebugSwitchImageView
android:id="@+id/iv_app_icon" android:id="@+id/iv_app_icon"
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
@@ -58,6 +58,15 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:spacing="20dp"> android:spacing="20dp">
<ImageButton
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_debug_step_over"
android:id="@+id/ib_debug_step_over"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:background="@null"/>
<ImageButton <ImageButton
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"