diff --git a/appbase/build.gradle b/appbase/build.gradle
index 85ff4b5..727c7be 100644
--- a/appbase/build.gradle
+++ b/appbase/build.gradle
@@ -24,13 +24,13 @@ android {
defaultConfig {
applicationId "cc.winboll.studio.appbase"
- minSdkVersion 26
+ minSdkVersion 24
targetSdkVersion 29
versionCode 1
// versionName 更新后需要手动设置
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
- versionName "15.1"
+ versionName "15.2"
if(true) {
versionName = genVersionName("${versionName}")
}
diff --git a/appbase/build.properties b/appbase/build.properties
index 18d898d..ad1af13 100644
--- a/appbase/build.properties
+++ b/appbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Wed Mar 26 15:43:21 HKT 2025
+#Sat Mar 29 08:43:44 HKT 2025
stageCount=1
libraryProject=libappbase
-baseVersion=15.1
-publishVersion=15.1.0
+baseVersion=15.2
+publishVersion=15.2.0
buildCount=0
-baseBetaVersion=15.1.1
+baseBetaVersion=15.2.1
diff --git a/appbase/src/main/AndroidManifest.xml b/appbase/src/main/AndroidManifest.xml
index 40fd259..3ff9087 100644
--- a/appbase/src/main/AndroidManifest.xml
+++ b/appbase/src/main/AndroidManifest.xml
@@ -8,15 +8,15 @@
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyAPPBaseTheme"
- android:resizeableActivity="true">
+ android:resizeableActivity="true"
+ android:process=":App">
+ android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation">
@@ -32,7 +32,18 @@
-
+
+
+
-
-
-
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
index cf0133e..b25b6ac 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
@@ -1,12 +1,10 @@
package cc.winboll.studio.appbase;
import android.app.Activity;
-import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Intent;
-import android.graphics.Rect;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -16,17 +14,17 @@ import cc.winboll.studio.appbase.activities.NewActivity;
import cc.winboll.studio.appbase.services.MainService;
import cc.winboll.studio.appbase.services.TestDemoBindService;
import cc.winboll.studio.appbase.services.TestDemoService;
+import cc.winboll.studio.libappbase.CrashHandler;
import cc.winboll.studio.libappbase.GlobalApplication;
+import cc.winboll.studio.libappbase.GlobalCrashActivity;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.SOS;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import cc.winboll.studio.libappbase.widgets.StatusWidget;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
-import cc.winboll.studio.libappbase.winboll.LogActivity;
-import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
-import android.support.v7.widget.Toolbar;
+import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
-public class MainActivity extends AppCompatActivity implements IWinBollActivity {
+public class MainActivity extends WinBollActivityBase implements IWinBollActivity {
public static final String TAG = "MainActivity";
@@ -65,15 +63,12 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
+ getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
- onLogActivity();
- return true;
- }
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
return super.onOptionsItemSelected(item);
}
@@ -92,6 +87,12 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
boolean isDebuging = ((CheckBox)view).isChecked();
GlobalApplication.setIsDebuging(isDebuging);
}
+
+ public void onPreviewGlobalCrashActivity(View view) {
+ Intent intent = new Intent(this, GlobalCrashActivity.class);
+ intent.putExtra(CrashHandler.EXTRA_CRASH_INFO, "Demo log...");
+ startActivity(intent);
+ }
public void onStartCenter(View view) {
MainService.startMainService(this);
@@ -136,6 +137,8 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
startService(intent);
}
+
+
public void onStopTestDemoService(View view) {
Intent intent = new Intent(this, TestDemoService.class);
@@ -173,26 +176,8 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
}
public void onTestOpenNewActivity(View view) {
- WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
+ GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
}
- public void onLogActivity() {
-
-
- Intent intent = new Intent(MainActivity.this, LogActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
- // Define the bounds.
- Rect bounds = new Rect(500, 300, 100, 0);
-
-// Set the bounds as an activity option.
-
- ActivityOptions options = ActivityOptions.makeBasic();
-
- options.setLaunchBounds(bounds);
-
- //Intent intent = new Intent(this, LpgActivity.class);
-
- startActivity(intent, options.toBundle());
- //WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, LogActivity.class);
- }
+
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/WinBollActivityBase.java b/appbase/src/main/java/cc/winboll/studio/appbase/WinBollActivityBase.java
new file mode 100644
index 0000000..54765d8
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/WinBollActivityBase.java
@@ -0,0 +1,82 @@
+package cc.winboll.studio.appbase;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/03/28 15:34:16
+ * @Describe 应用活动窗口基类
+ */
+import android.app.Activity;
+import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.MenuItem;
+import cc.winboll.studio.appbase.App;
+import cc.winboll.studio.appbase.R;
+import cc.winboll.studio.libappbase.GlobalApplication;
+import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
+import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
+import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
+
+public class WinBollActivityBase extends AppCompatActivity implements IWinBollActivity {
+
+ public static final String TAG = "WinBollActivityBase";
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
+
+ WinBollActivityManager getWinBollActivityManager() {
+ return WinBollActivityManager.getInstance(GlobalApplication.getInstance());
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWinBollActivityManager().add(this);
+ }
+
+ @Override
+ public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
+ super.onPostCreate(savedInstanceState, persistentState);
+ }
+
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
+ GlobalApplication.getWinBollActivityManager().startLogActivity(this);
+ return true;
+ } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
+ //moveTaskToBack(true);
+ exit();
+ }
+ // 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
+ return super.onOptionsItemSelected(item);
+ }
+
+ void exit() {
+ YesNoAlertDialog.show(this, "Exit " + getString(R.string.app_name), "Close all activity and exit?", new YesNoAlertDialog.OnDialogResultListener(){
+
+ @Override
+ public void onYes() {
+ App.getWinBollActivityManager().finishAll();
+ }
+
+ @Override
+ public void onNo() {
+ }
+ });
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ getWinBollActivityManager().registeRemove(this);
+ }
+}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java b/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
index 0df980f..37f4422 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/activities/New2Activity.java
@@ -7,16 +7,20 @@ package cc.winboll.studio.appbase.activities;
*/
import android.app.Activity;
import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import cc.winboll.studio.appbase.R;
-import cc.winboll.studio.libappbase.LogView;
+import cc.winboll.studio.appbase.WinBollActivityBase;
+import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
-import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
-public class New2Activity extends Activity implements IWinBollActivity {
+public class New2Activity extends WinBollActivityBase implements IWinBollActivity {
public static final String TAG = "New2Activity";
+ Toolbar mToolbar;
//LogView mLogView;
@Override
@@ -36,6 +40,9 @@ public class New2Activity extends Activity implements IWinBollActivity {
// mLogView = findViewById(R.id.logview);
// mLogView.start();
+ mToolbar = findViewById(R.id.toolbar);
+ setSupportActionBar(mToolbar);
+
}
@Override
@@ -45,14 +52,32 @@ public class New2Activity extends Activity implements IWinBollActivity {
}
public void onCloseThisActivity(View view) {
- WinBollActivityManager.getInstance(this).finish(this);
+ GlobalApplication.getWinBollActivityManager().finish(this);
}
public void onCloseAllActivity(View view) {
- WinBollActivityManager.getInstance(this).finishAll();
+ GlobalApplication.getWinBollActivityManager().finishAll();
}
public void onNewActivity(View view) {
- WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
+ GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.toolbar_main, menu);
+ getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
+ GlobalApplication.getWinBollActivityManager().startLogActivity(this);
+ return true;
+ }
+ // 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
+ return super.onOptionsItemSelected(item);
}
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
index 3a7c370..907c3ad 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/activities/NewActivity.java
@@ -6,16 +6,20 @@ package cc.winboll.studio.appbase.activities;
*/
import android.app.Activity;
import android.os.Bundle;
+import android.support.v7.widget.Toolbar;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import cc.winboll.studio.appbase.R;
-import cc.winboll.studio.libappbase.LogView;
+import cc.winboll.studio.appbase.WinBollActivityBase;
+import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
-import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
-public class NewActivity extends Activity implements IWinBollActivity {
+public class NewActivity extends WinBollActivityBase implements IWinBollActivity {
public static final String TAG = "NewActivity";
+ Toolbar mToolbar;
//LogView mLogView;
@Override
@@ -34,6 +38,9 @@ public class NewActivity extends Activity implements IWinBollActivity {
setContentView(R.layout.activity_new);
// mLogView = findViewById(R.id.logview);
// mLogView.start();
+ mToolbar = findViewById(R.id.toolbar);
+ setSupportActionBar(mToolbar);
+
}
@Override
@@ -43,14 +50,32 @@ public class NewActivity extends Activity implements IWinBollActivity {
}
public void onCloseThisActivity(View view) {
- WinBollActivityManager.getInstance(this).finish(this);
+ GlobalApplication.getWinBollActivityManager().finish(this);
}
public void onCloseAllActivity(View view) {
- WinBollActivityManager.getInstance(this).finishAll();
+ GlobalApplication.getWinBollActivityManager().finishAll();
}
public void onNew2Activity(View view) {
- WinBollActivityManager.getInstance(this).startWinBollActivity(this, New2Activity.class);
+ GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, New2Activity.class);
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.toolbar_main, menu);
+ getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
+ GlobalApplication.getWinBollActivityManager().startLogActivity(this);
+ return true;
+ }
+ // 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
+ return super.onOptionsItemSelected(item);
}
}
diff --git a/appbase/src/main/res/layout/activity_main.xml b/appbase/src/main/res/layout/activity_main.xml
index b86b6d4..193d0cc 100644
--- a/appbase/src/main/res/layout/activity_main.xml
+++ b/appbase/src/main/res/layout/activity_main.xml
@@ -39,28 +39,41 @@
android:layout_height="wrap_content"
android:text="Android版本10的代号是“Q”,API级别是29。 Android 10开始谷歌不再公开使用甜品作为版本代号,但内部仍保留了大量与“Q”相关的元素。Android 10本身并没有严格对应某个特定的Java版本,但在开发Android 10应用时,通常可以使用Java 8或更高版本。 Java 8为Android开发带来了诸如Lambda表达式、方法引用等新特性,能提高开发效率和代码可读性,与Android 10开发适配良好。Java 9及更高版本也可用于Android 10开发,能使用一些新的语言特性和API,但可能需要注意兼容性和配置问题。"/>
-
+ android:layout_height="wrap_content">
-
+ android:gravity="right|center_vertical"
+ android:layout_width="wrap_content">
-
+
-
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
-
-
-
@@ -160,7 +174,6 @@
-
-
-
-
+
+
+
@@ -198,6 +211,6 @@
-
+
diff --git a/appbase/src/main/res/layout/activity_new.xml b/appbase/src/main/res/layout/activity_new.xml
index 8a1452a..0917de8 100644
--- a/appbase/src/main/res/layout/activity_new.xml
+++ b/appbase/src/main/res/layout/activity_new.xml
@@ -6,11 +6,11 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+
-
-
-