Compare commits

...

49 Commits

Author SHA1 Message Date
ZhanGSKen
803d1afc18 Merge remote-tracking branch 'origin/appbase' into aes 2025-03-24 14:28:13 +08:00
ZhanGSKen
a859fcb237 参考 androidxdemo 类库版本. 2025-03-24 14:27:31 +08:00
ZhanGSKen
e9cf4404d2 Merge remote-tracking branch 'origin/androidxdemo' into aes 2025-03-24 14:23:37 +08:00
ZhanGSKen
5e42f21c9a 添加调试日志 2025-03-24 14:20:40 +08:00
ZhanGSKen
c394a37e0a 添加WinBoll类库,替换应用基类。 2025-03-24 14:16:53 +08:00
ZhanGSKen
c203557a6a <libappbase>Library Release 15.0.9 2025-03-24 14:06:30 +08:00
ZhanGSKen
83a061856a 更新类库,设置适配安卓版本和应用版本号。 2025-03-24 13:47:31 +08:00
ZhanGSKen
ede6c07deb 更新AndroidXDemo类库依赖方式 2025-03-24 13:27:40 +08:00
ZhanGSKen
652caf7a46 0959 2025-03-24 09:59:20 +08:00
ZhanGSKen
a0627d5b3b Merge remote-tracking branch 'origin/appbase' into aes 2025-03-24 08:13:32 +08:00
ZhanGSKen
b497faa0b9 20250319_0127 2025-03-19 01:27:22 +08:00
ZhanGSKen
f43c40e317 Merge branch 'appbase' into aes 2025-03-18 08:48:01 +08:00
ZhanGSKen
b3056e9d80 <libaes>Library Release 7.6.12 2025-03-09 20:28:25 +08:00
ZhanGSKen
cd23d625e1 <aes>APK 7.6.12 release Publish. 2025-03-09 20:28:09 +08:00
ZhanGSKen
e7749cb95d 该部分设置在应用于RecyclerView滚动时,控件图标初始位置设置未有起到作用。 2025-03-09 20:27:00 +08:00
ZhanGSKen
13f9f6d744 <libaes>Library Release 7.6.11 2025-03-09 20:16:04 +08:00
ZhanGSKen
df51422e42 <aes>APK 7.6.11 release Publish. 2025-03-09 20:15:48 +08:00
ZhanGSKen
6e6540698b 百分比拖动确定按钮添加图标位置初始化设定 2025-03-09 20:14:06 +08:00
ZhanGSKen
5a756a0f00 <libaes>Library Release 7.6.10 2025-03-09 13:56:33 +08:00
ZhanGSKen
b13a3d4866 <aes>APK 7.6.10 release Publish. 2025-03-09 13:56:19 +08:00
ZhanGSKen
57973b7210 修改百分比拉动控件除了图标以外的区域的响应逻辑 2025-03-09 13:55:25 +08:00
ZhanGSKen
f30470e46f <libaes>Library Release 7.6.9 2025-03-09 13:47:14 +08:00
ZhanGSKen
7c6dc87cf4 <aes>APK 7.6.9 release Publish. 2025-03-09 13:45:52 +08:00
ZhanGSKen
4756226a56 提高百分比拉动进度条与ViewPager兼容度 2025-03-09 13:44:44 +08:00
ZhanGSKen
334da43001 <libaes>Library Release 7.6.8 2025-03-09 11:30:22 +08:00
ZhanGSKen
d83abd7c83 <aes>APK 7.6.8 release Publish. 2025-03-09 11:30:09 +08:00
ZhanGSKen
cd24504131 <libaes>Library Release 7.6.7 2025-03-09 11:28:58 +08:00
ZhanGSKen
e8921350fd <aes>APK 7.6.7 release Publish. 2025-03-09 11:28:39 +08:00
ZhanGSKen
3765154f60 优化百分比拉动seekbar控件 2025-03-09 11:27:27 +08:00
ZhanGSKen
8be7a931eb Merge branch 'appbase' into aes 2025-03-09 09:35:22 +08:00
ZhanGSKen
c55183b10c <libaes>Library Release 7.6.6 2025-03-08 04:21:39 +08:00
ZhanGSKen
1204f295e1 <aes>APK 7.6.6 release Publish. 2025-03-08 04:21:16 +08:00
ZhanGSKen
fbd6ed9cf4 更改类库引用方式,更新类库。 2025-03-08 04:19:48 +08:00
ZhanGSKen
32d3960e03 更新类库 2025-03-08 03:35:07 +08:00
ZhanGSKen
39b16318f9 Merge branch 'appbase' into aes 2025-03-08 03:28:58 +08:00
ZhanGSKen
9afb1751a6 0327 2025-03-08 03:28:00 +08:00
ZhanGSKen
48165364d1 Merge branch 'appbase' into aes 2025-03-07 09:34:23 +08:00
ZhanGSKen
e98f62149d 0933 2025-03-07 09:33:34 +08:00
ZhanGSKen
c01a739b9d 更新类库,未调试。 2025-02-06 11:29:46 +08:00
ZhanGSKen
7f8ee8d6de 更新类库 2025-02-04 09:00:34 +08:00
ZhanGSKen
c90d8549b4 <libaes>Library Release 7.6.5 2025-02-04 08:26:21 +08:00
ZhanGSKen
f3d97fc94b <aes>APK 7.6.5 release Publish. 2025-02-04 08:26:00 +08:00
ZhanGSKen
8f8c3c6c97 优化主题配置结构 2025-02-04 08:24:06 +08:00
ZhanGSKen
61200c37be <libaes>Library Release 7.6.4 2025-01-26 14:20:24 +08:00
ZhanGSKen
ebee402c84 <aes>APK 7.6.4 release Publish. 2025-01-26 14:19:55 +08:00
ZhanGSKen
0a7a26d3cd 更新引用类库 2025-01-26 14:17:28 +08:00
ZhanGSKen
6410eda84e <libaes>Library Release 7.6.3 2025-01-23 12:54:30 +08:00
ZhanGSKen
c91c9c9887 <aes>APK 7.6.3 release Publish. 2025-01-23 12:54:10 +08:00
ZhanGSKen
6450faa556 更新类库 2025-01-23 12:44:36 +08:00
38 changed files with 1260 additions and 572 deletions

View File

@@ -19,17 +19,17 @@ def genVersionName(def versionName){
android {
compileSdkVersion 32
buildToolsVersion "33.0.3"
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.aes"
minSdkVersion 24
targetSdkVersion 30
minSdkVersion 26
targetSdkVersion 29
versionCode 1
// versionName 更新后需要手动设置
// 项目模块目录的 build.gradle 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
versionName "7.6"
versionName "15.0"
if(true) {
versionName = genVersionName("${versionName}")
}
@@ -41,29 +41,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
dependencies {
api project(':libaes')
//api 'cc.winboll.studio:winboll-shared:1.6.5'
api 'io.github.medyo:android-about-page:2.0.0'
api 'com.github.getActivity:ToastUtils:10.5'
api 'com.jcraft:jsch:0.1.55'
api 'org.jsoup:jsoup:1.13.1'
api 'com.squareup.okhttp3:okhttp:4.4.1'
api 'androidx.appcompat:appcompat:1.0.0'
api 'androidx.fragment:fragment:1.0.0'
api 'com.google.android.material:material:1.0.0'
api 'cc.winboll.studio:libapputils:9.2.1'
api 'cc.winboll.studio:libappbase:1.0.3'
api fileTree(dir: 'libs', include: ['*.jar'])
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 19 04:58:59 GMT 2025
stageCount=3
#Mon Mar 24 06:25:20 GMT 2025
stageCount=0
libraryProject=libaes
baseVersion=7.6
publishVersion=7.6.2
buildCount=4
baseBetaVersion=7.6.3
baseVersion=15.0
publishVersion=15.0.0
buildCount=7
baseBetaVersion=15.0.1

View File

@@ -8,7 +8,7 @@
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/WinBoll.SupportThemeNoActionBar"
android:theme="@style/MyAESTheme"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true">

View File

@@ -5,12 +5,219 @@ package cc.winboll.studio.aes;
* @Date 2024/06/13 19:05:52
* @Describe 应用主窗口
*/
import cc.winboll.studio.libaes.unittests.LibraryActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
import androidx.appcompat.app.AppCompatActivity;
import cc.winboll.studio.aes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog;
import cc.winboll.studio.libaes.dialogs.StoragePathDialog;
import cc.winboll.studio.libaes.unittests.SecondaryLibraryActivity;
import cc.winboll.studio.libaes.unittests.TestAButtonFragment;
import cc.winboll.studio.libaes.unittests.TestASupportToolbarActivity;
import cc.winboll.studio.libaes.unittests.TestAToolbarActivity;
import cc.winboll.studio.libaes.unittests.TestDrawerFragmentActivity;
import cc.winboll.studio.libaes.unittests.TestViewPageFragment;
import cc.winboll.studio.libaes.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libapputils.app.AboutActivityFactory;
import cc.winboll.studio.libapputils.bean.APPInfo;
import com.a4455jkjh.colorpicker.ColorPickerDialog;
import java.util.ArrayList;
public class MainActivity extends DrawerFragmentActivity implements IWinBollActivity {
public class MainActivity extends LibraryActivity {
public static final String TAG = "MainActivity";
TestAButtonFragment mTestAButtonFragment;
TestViewPageFragment mTestViewPageFragment;
@Override
public APPInfo getAppInfo() {
String szBranchName = "aes";
APPInfo appInfo = AboutActivityFactory.buildDefaultAPPInfo();
appInfo.setAppName("AES");
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
appInfo.setAppDescription("AES Description");
appInfo.setAppGitName("APP");
appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch(szBranchName);
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=AES");
appInfo.setAppAPKName("AES");
appInfo.setAppAPKFolderName("AES");
return appInfo;
//return null;
}
@Override
public String getTag() {
return TAG;
}
@Override
public Toolbar initToolBar() {
return null;
}
@Override
public boolean isAddWinBollToolBar() {
return false;
}
@Override
public boolean isEnableDisplayHomeAsUp() {
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
//setSubtitle(TAG);
}
@Override
public void initDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.initDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "initDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public void reinitDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.reinitDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "reinitDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public DrawerFragmentActivity.ActivityType initActivityType() {
return DrawerFragmentActivity.ActivityType.Main;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_library, menu);
if(App.isDebuging()) {
getMenuInflater().inflate(cc.winboll.studio.libapputils.R.menu.toolbar_studio_debug, menu);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
super.onItemClick(parent, view, position, id);
switch (position) {
case 0 : {
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
break;
}
case 1 : {
if (mTestViewPageFragment == null) {
mTestViewPageFragment = new TestViewPageFragment();
addFragment(mTestViewPageFragment);
}
showFragment(mTestViewPageFragment);
break;
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int nItemId = item.getItemId();
// if (item.getItemId() == R.id.item_log) {
// WinBollActivityManager.getInstance(this).startWinBollActivity(getApplicationContext(), LogActivity.class);
// } else
if (nItemId == R.id.item_atoast) {
Toast.makeText(getApplication(), "item_testatoast", Toast.LENGTH_SHORT).show();
} else if (nItemId == R.id.item_atoolbar) {
Intent intent = new Intent(this, TestAToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_asupporttoolbar) {
Intent intent = new Intent(this, TestASupportToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_colordialog) {
ColorPickerDialog dlg = new ColorPickerDialog(this, getResources().getColor(R.color.colorPrimary));
dlg.setOnColorChangedListener(new com.a4455jkjh.colorpicker.view.OnColorChangedListener() {
@Override
public void beforeColorChanged() {
}
@Override
public void onColorChanged(int color) {
}
@Override
public void afterColorChanged() {
}
});
dlg.show();
} else if (nItemId == R.id.item_dialogstoragepath) {
final StoragePathDialog dialog = new StoragePathDialog(this, 0);
dialog.setOnOKClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
} else if (nItemId == R.id.item_localfileselectdialog) {
final LocalFileSelectDialog dialog = new LocalFileSelectDialog(this);
dialog.setOnOKClickListener(new LocalFileSelectDialog.OKClickListener() {
@Override
public void onOKClick(String sz) {
Toast.makeText(getApplication(), sz, Toast.LENGTH_SHORT).show();
//dialog.dismiss();
}
});
dialog.open();
} else if (nItemId == R.id.item_secondarylibraryactivity) {
Intent intent = new Intent(this, SecondaryLibraryActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_drawerfragmentactivity) {
Intent intent = new Intent(this, TestDrawerFragmentActivity.class);
startActivity(intent);
}
else if (nItemId == R.id.item_about) {
AboutActivityFactory.showAboutActivity(this, getAppInfo());
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@@ -13,7 +13,7 @@
<item
android:id="@+id/item_localfileselectdialog"
android:title="LocalFileSelectDialog"/>
<item
android:id="@+id/item_atoolbar"
android:title="Test AToolbar"/>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#FF00B322</color>
<color name="colorPrimaryDark">#FF005C12</color>
<color name="colorAccent">#FF8DFFA2</color>
<color name="colorText">#FFFFFB8D</color>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="MyAESTheme" parent="AESTheme">
</style>
</resources>

View File

@@ -18,15 +18,8 @@ def genVersionName(def versionName){
}
android {
productFlavors {
beta {
}
stage {
}
}
compileSdkVersion 30
buildToolsVersion "30.0.3"
compileSdkVersion 32
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.androidxdemo"
@@ -36,7 +29,7 @@ android {
// versionName 更新后需要手动设置
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
versionName "1.0"
versionName "15.0"
if(true) {
versionName = genVersionName("${versionName}")
}
@@ -54,23 +47,26 @@ dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
// SSH
implementation 'com.jcraft:jsch:0.1.55'
api 'com.jcraft:jsch:0.1.55'
// Html 解析
implementation 'org.jsoup:jsoup:1.13.1'
api 'org.jsoup:jsoup:1.13.1'
// 二维码类库
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
api 'com.google.zxing:core:3.4.1'
api 'com.journeyapps:zxing-android-embedded:3.6.0'
// 应用介绍页类库
implementation 'io.github.medyo:android-about-page:2.0.0'
api 'io.github.medyo:android-about-page:2.0.0'
// 吐司类库
implementation 'com.github.getActivity:ToastUtils:10.5'
api 'com.github.getActivity:ToastUtils:10.5'
// 网络连接类库
implementation 'com.squareup.okhttp3:okhttp:4.4.1'
// Android 类库
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.viewpager:viewpager:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
implementation 'androidx.fragment:fragment:1.1.0'
implementation 'com.google.android.material:material:1.4.0'
api 'com.squareup.okhttp3:okhttp:4.4.1'
// AndroidX 类库
api 'androidx.appcompat:appcompat:1.0.0'
api 'com.google.android.material:material:1.4.0'
//api 'androidx.viewpager:viewpager:1.0.0'
//api 'androidx.vectordrawable:vectordrawable:1.1.0'
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
api 'cc.winboll.studio:libappbase:15.0.9'
api 'cc.winboll.studio:libapputils:15.0.11'
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Tue Mar 11 18:25:43 GMT 2025
#Mon Mar 24 06:19:57 GMT 2025
stageCount=0
libraryProject=
baseVersion=1.0
publishVersion=1.0.0
buildCount=4
baseBetaVersion=1.0.1
baseVersion=15.0
publishVersion=15.0.0
buildCount=8
baseBetaVersion=15.0.1

View File

@@ -8,9 +8,9 @@
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:theme="@style/MyAppTheme"
android:resizeableActivity="true"
android:name=".GlobalApplication">
android:name=".App">
<activity
android:name=".MainActivity"
@@ -34,4 +34,4 @@
</application>
</manifest>
</manifest>

View File

@@ -1,7 +1,6 @@
package cc.winboll.studio.androidxdemo;
import android.app.Activity;
import android.app.Application;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
@@ -22,6 +21,7 @@ import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
@@ -39,15 +39,15 @@ import java.util.Date;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
public class GlobalApplication extends Application {
public class App extends GlobalApplication {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
@Override
public void onCreate() {
super.onCreate();
CrashHandler.getInstance().registerGlobal(this);
CrashHandler.getInstance().registerPart(this);
//CrashHandler.getInstance().registerGlobal(this);
//CrashHandler.getInstance().registerPart(this);
}
public static void write(InputStream input, OutputStream output) throws IOException {
@@ -252,7 +252,7 @@ public class GlobalApplication extends Application {
private static String getKernel() {
try {
return GlobalApplication.toString(new FileInputStream("/proc/version")).trim();
return App.toString(new FileInputStream("/proc/version")).trim();
} catch (Throwable e) {
return e.getMessage();
}
@@ -331,4 +331,4 @@ public class GlobalApplication extends Application {
restart();
}
}
}
}

View File

@@ -3,17 +3,26 @@ package cc.winboll.studio.androidxdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libappbase.LogView;
public class MainActivity extends AppCompatActivity {
LogView mLogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mLogView = findViewById(R.id.logview);
}
}
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
}

View File

@@ -34,5 +34,18 @@
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/logview"/>
</LinearLayout>
</LinearLayout>

View File

@@ -1,7 +1,7 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

View File

@@ -1,5 +1,5 @@
#Created by .winboll/winboll_app_build.gradle
#Mon Mar 24 14:06:10 HKT 2025
#Mon Mar 24 14:06:25 HKT 2025
stageCount=10
libraryProject=libappbase
baseVersion=15.0

View File

@@ -4,14 +4,12 @@ apply from: '../.winboll/winboll_lib_build.gradle'
apply from: '../.winboll/winboll_lint_build.gradle'
android {
namespace 'cc.winboll.studio.libaes'
compileSdkVersion 32
buildToolsVersion "33.0.3"
buildToolsVersion "32.0.0"
defaultConfig {
minSdkVersion 24
targetSdkVersion 30
minSdkVersion 26
targetSdkVersion 29
}
buildTypes {
release {
@@ -19,30 +17,39 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
dependencies {
//api 'cc.winboll.studio:winboll-shared:1.6.5'
api 'io.github.medyo:android-about-page:2.0.0'
api 'com.github.getActivity:ToastUtils:10.5'
api 'com.jcraft:jsch:0.1.55'
api 'org.jsoup:jsoup:1.13.1'
api 'com.squareup.okhttp3:okhttp:4.4.1'
api 'androidx.appcompat:appcompat:1.0.0'
api 'androidx.fragment:fragment:1.0.0'
api 'com.google.android.material:material:1.0.0'
// https://github.com/baoyongzhang/android-PullRefreshLayout
api 'com.baoyz.pullrefreshlayout:library:1.2.0'
api 'cc.winboll.studio:libapputils:9.2.1'
api 'cc.winboll.studio:libappbase:1.0.3'
api fileTree(dir: 'libs', include: ['*.jar'])
// 权限请求框架https://github.com/getActivity/XXPermissions
api 'com.github.getActivity:XXPermissions:18.63'
// 下拉控件
api 'com.baoyz.pullrefreshlayout:library:1.2.0'
// 拼音搜索
// https://mvnrepository.com/artifact/com.github.open-android/pinyin4j
api 'com.github.open-android:pinyin4j:2.5.0'
// SSH
api 'com.jcraft:jsch:0.1.55'
// Html 解析
api 'org.jsoup:jsoup:1.13.1'
// 二维码类库
api 'com.google.zxing:core:3.4.1'
api 'com.journeyapps:zxing-android-embedded:3.6.0'
// 应用介绍页类库
api 'io.github.medyo:android-about-page:2.0.0'
// 吐司类库
api 'com.github.getActivity:ToastUtils:10.5'
// 网络连接类库
api 'com.squareup.okhttp3:okhttp:4.4.1'
// AndroidX 类库
api 'androidx.appcompat:appcompat:1.0.0'
api 'com.google.android.material:material:1.4.0'
//api 'androidx.viewpager:viewpager:1.0.0'
//api 'androidx.vectordrawable:vectordrawable:1.1.0'
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
api 'cc.winboll.studio:libappbase:15.0.9'
api 'cc.winboll.studio:libapputils:15.0.11'
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 19 04:58:59 GMT 2025
stageCount=3
#Mon Mar 24 06:25:20 GMT 2025
stageCount=0
libraryProject=libaes
baseVersion=7.6
publishVersion=7.6.2
buildCount=4
baseBetaVersion=7.6.3
baseVersion=15.0
publishVersion=15.0.0
buildCount=7
baseBetaVersion=15.0.1

View File

@@ -16,7 +16,6 @@ import android.view.View;
import android.widget.AdapterView;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
@@ -27,18 +26,20 @@ import cc.winboll.studio.libaes.beans.AESThemeBean;
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
import cc.winboll.studio.libaes.utils.AESThemeUtil;
import cc.winboll.studio.libaes.views.ADrawerMenuListView;
import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libappbase.LogUtils;
import com.baoyz.widget.PullRefreshLayout;
import java.util.ArrayList;
import cc.winboll.studio.libaes.winboll.IWinBollActivity;
import androidx.appcompat.widget.Toolbar;
public abstract class DrawerFragmentActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
public abstract class DrawerFragmentActivity extends AppCompatActivity implements IWinBollActivity,AdapterView.OnItemClickListener {
public static final String TAG = "DrawerFragmentActivity";
static final String SHAREDPREFERENCES_NAME = "SHAREDPREFERENCES_NAME";
static final String DRAWER_THEME_TYPE = "DRAWER_THEME_TYPE";
protected Context mContext;
//protected Context mContext;
ActivityType mActivityType;
ActionBarDrawerToggle mActionBarDrawerToggle;
DrawerLayout mDrawerLayout;
@@ -58,7 +59,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
@Override
protected void onCreate(Bundle savedInstanceState) {
mContext = this;
//mContext = this;
mThemeType = getThemeType();
setThemeStyle();
super.onCreate(savedInstanceState);
@@ -72,7 +73,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
super.onDestroy();
}
@Override
/*@Override
public Intent getIntent() {
// TODO: Implement this method
return super.getIntent();
@@ -80,7 +81,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
public Context getContext() {
return this.mContext;
}
}*/
@Override
public MenuInflater getMenuInflater() {
@@ -88,20 +89,20 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
return super.getMenuInflater();
}
public void setSubtitle(CharSequence context) {
/*public void setSubtitle(CharSequence context) {
// TODO: Implement this method
getSupportActionBar().setSubtitle(context);
}
}*/
@Override
public void recreate() {
super.recreate();
}
@Override
/*@Override
public boolean moveTaskToBack(boolean nonRoot) {
return super.moveTaskToBack(nonRoot);
}
}*/
@Override
public void startActivity(Intent intent) {
@@ -113,7 +114,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
super.startActivityForResult(intent, requestCode, options);
}
@Override
/*@Override
public FragmentManager getSupportFragmentManager() {
return super.getSupportFragmentManager();
}
@@ -131,7 +132,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
public void setTitle(int resId) {
// TODO: Implement this method
getSupportActionBar().setTitle(resId);
}
}*/
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
@@ -151,7 +152,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
void setThemeStyle() {
//setTheme(AESThemeBean.getThemeStyle(getThemeType()));
setTheme(AESThemeUtil.getThemeTypeID(this));
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
}
boolean checkThemeStyleChange() {
@@ -163,7 +164,7 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
SHAREDPREFERENCES_NAME, MODE_PRIVATE);
return AESThemeBean.ThemeType.values()[((sharedPreferences.getInt(DRAWER_THEME_TYPE, AESThemeBean.ThemeType.DEFAULT.ordinal())))];
*/
return AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(this));
return AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
}
@Override

View File

@@ -8,7 +8,7 @@ package cc.winboll.studio.libaes.beans;
import android.util.JsonReader;
import android.util.JsonWriter;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libapputils.bean.BaseBean;
import cc.winboll.studio.libappbase.BaseBean;
import java.io.IOException;
public class AESThemeBean extends BaseBean {
@@ -16,7 +16,7 @@ public class AESThemeBean extends BaseBean {
public static final String TAG = "AESThemeBean";
public enum ThemeType {
DEFAULT("默认主题"),
AES("默认主题"),
DEPTH("深奥主题"),
SKY("天空主题"),
GOLDEN("辉煌主题"),
@@ -42,7 +42,7 @@ public class AESThemeBean extends BaseBean {
}
// 保存当前主题
int currentThemeStyleID = getThemeStyleID(ThemeType.DEFAULT);
int currentThemeStyleID = getThemeStyleID(ThemeType.AES);
public AESThemeBean() {
}
@@ -99,7 +99,7 @@ public class AESThemeBean extends BaseBean {
}
public static int getThemeStyleID(ThemeType themeType) {
int themeStyleID = R.style.DefaultAESTheme;
int themeStyleID = R.style.AESTheme;
if (AESThemeBean.ThemeType.DEPTH == themeType) {
themeStyleID = R.style.DepthAESTheme;
} else if (AESThemeBean.ThemeType.SKY == themeType) {
@@ -110,15 +110,15 @@ public class AESThemeBean extends BaseBean {
themeStyleID = R.style.MemorAESTheme;
} else if (AESThemeBean.ThemeType.TAO == themeType) {
themeStyleID = R.style.TaoAESTheme;
} else if (AESThemeBean.ThemeType.DEFAULT == themeType) {
themeStyleID = R.style.DefaultAESTheme;
} else if (AESThemeBean.ThemeType.AES == themeType) {
themeStyleID = R.style.AESTheme;
}
//LogUtils.d(TAG, "themeStyleID " + Integer.toString(themeStyleID));
return themeStyleID;
}
public static AESThemeBean.ThemeType getThemeStyleType(int nThemeStyleID) {
AESThemeBean.ThemeType themeStyle = AESThemeBean.ThemeType.DEFAULT;
AESThemeBean.ThemeType themeStyle = AESThemeBean.ThemeType.AES;
if (R.style.DepthAESTheme == nThemeStyleID) {
themeStyle = AESThemeBean.ThemeType.DEPTH ;
} else if (R.style.SkyAESTheme == nThemeStyleID) {
@@ -129,8 +129,8 @@ public class AESThemeBean extends BaseBean {
themeStyle = AESThemeBean.ThemeType.MEMOR ;
} else if (R.style.TaoAESTheme == nThemeStyleID) {
themeStyle = AESThemeBean.ThemeType.TAO ;
} else if (R.style.DefaultAESTheme == nThemeStyleID) {
themeStyle = AESThemeBean.ThemeType.DEFAULT;
} else if (R.style.AESTheme == nThemeStyleID) {
themeStyle = AESThemeBean.ThemeType.AES;
}
//LogUtils.d(TAG, "themeStyle " + Integer.toString(themeStyle.ordinal()));
return themeStyle;

View File

@@ -5,7 +5,7 @@ import android.content.DialogInterface;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libappbase.LogUtils;
import java.io.File;
import java.lang.reflect.Field;
import java.text.Collator;

View File

@@ -1,170 +0,0 @@
package cc.winboll.studio.libaes.unittests;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2024/06/14 03:43:23
* @Describe AES类库主窗口
*/
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog;
import cc.winboll.studio.libaes.dialogs.StoragePathDialog;
import cc.winboll.studio.libapputils.log.LogUtils;
import com.a4455jkjh.colorpicker.ColorPickerDialog;
import java.util.ArrayList;
public class LibraryActivity extends DrawerFragmentActivity {
public static final String TAG = "LibraryActivity";
TestAButtonFragment mTestAButtonFragment;
TestViewPageFragment mTestViewPageFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
setSubtitle(TAG);
}
@Override
public void initDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.initDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "initDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public void reinitDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.reinitDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "reinitDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public DrawerFragmentActivity.ActivityType initActivityType() {
return DrawerFragmentActivity.ActivityType.Main;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_library, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
super.onItemClick(parent, view, position, id);
switch (position) {
case 0 : {
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
break;
}
case 1 : {
if (mTestViewPageFragment == null) {
mTestViewPageFragment = new TestViewPageFragment();
addFragment(mTestViewPageFragment);
}
showFragment(mTestViewPageFragment);
break;
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int nItemId = item.getItemId();
// if (item.getItemId() == R.id.item_log) {
// WinBollActivityManager.getInstance(this).startWinBollActivity(getApplicationContext(), LogActivity.class);
// } else
if (nItemId == R.id.item_atoast) {
Toast.makeText(getApplication(), "item_testatoast", Toast.LENGTH_SHORT).show();
} else if (nItemId == R.id.item_atoolbar) {
Intent intent = new Intent(this, TestAToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_asupporttoolbar) {
Intent intent = new Intent(this, TestASupportToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_colordialog) {
ColorPickerDialog dlg = new ColorPickerDialog(this, getResources().getColor(R.color.colorPrimary));
dlg.setOnColorChangedListener(new com.a4455jkjh.colorpicker.view.OnColorChangedListener() {
@Override
public void beforeColorChanged() {
}
@Override
public void onColorChanged(int color) {
}
@Override
public void afterColorChanged() {
}
});
dlg.show();
} else if (nItemId == R.id.item_dialogstoragepath) {
final StoragePathDialog dialog = new StoragePathDialog(this, 0);
dialog.setOnOKClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
} else if (nItemId == R.id.item_localfileselectdialog) {
final LocalFileSelectDialog dialog = new LocalFileSelectDialog(this);
dialog.setOnOKClickListener(new LocalFileSelectDialog.OKClickListener() {
@Override
public void onOKClick(String sz) {
Toast.makeText(getApplication(), sz, Toast.LENGTH_SHORT).show();
//dialog.dismiss();
}
});
dialog.open();
} else if (nItemId == R.id.item_secondarylibraryactivity) {
Intent intent = new Intent(this, SecondaryLibraryActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_drawerfragmentactivity) {
Intent intent = new Intent(this, TestDrawerFragmentActivity.class);
startActivity(intent);
}
// else if (nItemId == R.id.item_about) {
// Intent intent = new Intent(this, AboutActivity.class);
// startActivity(intent);
// }
return super.onOptionsItemSelected(item);
}
}

View File

@@ -6,18 +6,47 @@ import android.view.MenuItem;
import android.widget.Toast;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libapputils.bean.APPInfo;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.Toolbar;
import cc.winboll.studio.libaes.winboll.IWinBollActivity;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2024/06/15 00:58:10
* @Describe 第二级窗口
*/
public class SecondaryLibraryActivity extends DrawerFragmentActivity {
public class SecondaryLibraryActivity extends DrawerFragmentActivity implements IWinBollActivity {
public static final String TAG = "SecondaryLibraryActivity";
SecondaryLibraryFragment mSecondaryLibraryFragment;
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return null;
}
@Override
public Toolbar initToolBar() {
return null;
}
@Override
public boolean isAddWinBollToolBar() {
return false;
}
@Override
public boolean isEnableDisplayHomeAsUp() {
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -43,7 +72,7 @@ public class SecondaryLibraryActivity extends DrawerFragmentActivity {
public boolean onOptionsItemSelected(MenuItem item) {
int nItemId = item.getItemId();
if (nItemId == R.id.item_test) {
Toast.makeText(getApplication(), "item_test", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "item_test", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}

View File

@@ -9,11 +9,11 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.views.AButton;
import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.utils.ToastUtils;
public class TestAButtonFragment extends Fragment {
@@ -28,7 +28,7 @@ public class TestAButtonFragment extends Fragment {
@Override
public void onClick(View view) {
LogUtils.d(TAG, "onClick");
Toast.makeText(getActivity(), "AButton", Toast.LENGTH_SHORT).show();
ToastUtils.show("AButton");
}
});

View File

@@ -4,26 +4,57 @@ package cc.winboll.studio.libaes.unittests;
* @Author ZhanGSKen@QQ.COM
* @Date 2024/06/30 15:00:51
*/
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
import androidx.fragment.app.Fragment;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libaes.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libapputils.bean.APPInfo;
import java.util.ArrayList;
public class TestDrawerFragmentActivity extends DrawerFragmentActivity {
public class TestDrawerFragmentActivity extends DrawerFragmentActivity implements IWinBollActivity {
@Override
public APPInfo getAppInfo() {
return null;
}
@Override
public String getTag() {
return null;
}
@Override
public Toolbar initToolBar() {
return null;
}
@Override
public boolean isAddWinBollToolBar() {
return false;
}
@Override
public boolean isEnableDisplayHomeAsUp() {
return false;
}
public static final String TAG = "TestDrawerFragmentActivity";
TestFragment1 mTestFragment1;
TestFragment2 mTestFragment2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -66,7 +97,7 @@ public class TestDrawerFragmentActivity extends DrawerFragmentActivity {
super.onItemClick(parent, view, position, id);
switch (position) {
case 0 : {
Toast.makeText(getContext(), "0", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "0", Toast.LENGTH_SHORT).show();
//LogUtils.d(TAG, "MenuItem 1");
showFragment(mTestFragment1);
break;

View File

@@ -5,6 +5,7 @@ package cc.winboll.studio.libaes.unittests;
* @Date 2024/07/16 01:35:56
* @Describe TestViewPageFragment
*/
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -17,12 +18,17 @@ import androidx.viewpager.widget.ViewPager;
import cc.winboll.studio.libaes.ImagePagerAdapter;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.ArrayList;
import java.util.List;
public class TestViewPageFragment extends Fragment implements ViewPager.OnPageChangeListener, View.OnClickListener {
public static final String TAG = "TestViewPageFragment";
Context mContext;
LogView mLogView;
private ViewPager viewPager;
private List<View> views; //用来存放放进ViewPager里面的布局
@@ -36,6 +42,10 @@ public class TestViewPageFragment extends Fragment implements ViewPager.OnPageCh
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_viewpage, container, false);
mContext = getActivity();
mLogView = mView.findViewById(R.id.logview);
mLogView.start();
//viewPager = findViewById(R.id.activitymainViewPager1);
initData();
@@ -60,12 +70,13 @@ public class TestViewPageFragment extends Fragment implements ViewPager.OnPageCh
initPoint();//初始化页面下方的点
viewPager.setOnPageChangeListener(this);
initAOHPCTCSeekBar();
initAOHPCTCSeekBar2();
}
//初始化所要显示的布局
void initData() {
ViewPager viewPager = mView.findViewById(R.id.fragmentviewpageViewPager1);
LayoutInflater inflater = LayoutInflater.from(getActivity());
LayoutInflater inflater = LayoutInflater.from(mContext);
View view1 = inflater.inflate(R.layout.viewpage_atickprogressbar, viewPager, false);
View view2 = inflater.inflate(R.layout.viewpage_acard, viewPager, false);
View view3 = inflater.inflate(R.layout.viewpage_aohpctccard, viewPager, false);
@@ -185,14 +196,31 @@ public class TestViewPageFragment extends Fragment implements ViewPager.OnPageCh
}
void initAOHPCTCSeekBar() {
AOHPCTCSeekBar seekbar = mView.findViewById(R.id.fragmentviewpageAOHPCTCSeekBar1);
seekbar.setThumb(getActivity().getDrawable(R.drawable.ic_launcher));
seekbar.setThumbOffset(10);
AOHPCTCSeekBar seekbar = views.get(3).findViewById(R.id.fragmentviewpageAOHPCTCSeekBar1);
seekbar.setThumb(mContext.getDrawable(R.drawable.ic_launcher));
//seekbar.setThumbOffset(200);
//seekbar.setThumbOffset(1);
seekbar.setBlurRightDP(50);
seekbar.setOnOHPCListener(new AOHPCTCSeekBar.OnOHPCListener() {
@Override
public void onOHPCommit() {
Toast.makeText(getActivity(), "onOHPCommit ", Toast.LENGTH_SHORT).show();
ToastUtils.show("onOHPCommit");
}
});
}
void initAOHPCTCSeekBar2() {
AOHPCTCSeekBar seekbar = views.get(3).findViewById(R.id.fragmentviewpageAOHPCTCSeekBar2);
seekbar.setThumb(mContext.getDrawable(R.drawable.ic_call));
//seekbar.setThumbOffset(200);
//seekbar.setThumbOffset(1);
seekbar.setBlurRightDP(50);
seekbar.setOnOHPCListener(new AOHPCTCSeekBar.OnOHPCListener() {
@Override
public void onOHPCommit() {
ToastUtils.show("onOHPCommit 2");
}
});
}

View File

@@ -11,8 +11,8 @@ import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.app.AppCompatActivity;
import cc.winboll.studio.libaes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libaes.beans.AESThemeBean;
import cc.winboll.studio.libapputils.app.WinBollActivity;
public class AESThemeUtil {
@@ -25,7 +25,7 @@ public class AESThemeUtil {
public static <T extends Context> int getThemeTypeID(T context) {
AESThemeBean bean = AESThemeBean.loadBean(context, AESThemeBean.class);
return bean == null ? AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT): bean.getCurrentThemeTypeID();
return bean == null ? AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.AES): bean.getCurrentThemeTypeID();
}
public static <T extends Context> void saveThemeStyleID(T context, int nThemeTypeID) {
@@ -41,9 +41,9 @@ public class AESThemeUtil {
activity.setTheme(getThemeTypeID(activity));
}
public static <T extends WinBollActivity> void applyWinBollTheme(T activity) {
/*public static <T extends WinBollActivity> void applyWinBollTheme(T activity) {
activity.setTheme(getThemeTypeID(activity.getApplicationContext()));
}
}*/
public static <T extends Activity> void applyAppTheme(Activity activity, AESThemeBean.ThemeType themeType) {
activity.setTheme(AESThemeBean.getThemeStyleID(themeType));
@@ -53,9 +53,9 @@ public class AESThemeUtil {
activity.setTheme(AESThemeBean.getThemeStyleID(themeType));
}
public static <T extends WinBollActivity> void applyWinBollTheme(Activity activity, AESThemeBean.ThemeType themeType) {
/*public static <T extends WinBollActivity> void applyWinBollTheme(Activity activity, AESThemeBean.ThemeType themeType) {
activity.setTheme(AESThemeBean.getThemeStyleID(themeType));
}
}*/
public static <T extends Activity> void inflateMenu(T activity, Menu menu) {
activity.getMenuInflater().inflate(R.menu.toolbar_apptheme, menu);
@@ -65,9 +65,9 @@ public class AESThemeUtil {
activity.getMenuInflater().inflate(R.menu.toolbar_apptheme, menu);
}
public static <T extends WinBollActivity> void inflateWinBollMenu(T activity, Menu menu) {
/*public static <T extends WinBollActivity> void inflateWinBollMenu(T activity, Menu menu) {
activity.getMenuInflater().inflate(R.menu.toolbar_apptheme, menu);
}
}*/
public static <T extends Activity> boolean onAppThemeItemSelected(T activity, MenuItem item) {
int nThemeStyleID;
@@ -92,7 +92,7 @@ public class AESThemeUtil {
saveThemeStyleID(activity, nThemeStyleID);
return true;
} else if (R.id.item_defaulttheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT);
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.AES);
saveThemeStyleID(activity, nThemeStyleID);
return true;
}
@@ -123,7 +123,7 @@ public class AESThemeUtil {
saveThemeStyleID(activity, nThemeStyleID);
return true;
} else if (R.id.item_defaulttheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT);
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.AES);
saveThemeStyleID(activity, nThemeStyleID);
return true;
}
@@ -131,7 +131,7 @@ public class AESThemeUtil {
return false;
}
public static <T extends WinBollActivity> boolean onWinBollThemeItemSelected(T activity, MenuItem item) {
public static <T extends AppCompatActivity> boolean onWinBollThemeItemSelected(T activity, MenuItem item) {
int nThemeStyleID;
if (R.id.item_depththeme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEPTH);
@@ -154,7 +154,38 @@ public class AESThemeUtil {
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_defaulttheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEFAULT);
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.AES);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
}
return false;
}
public static <T extends DrawerFragmentActivity> boolean onWinBollThemeItemSelected(T activity, MenuItem item) {
int nThemeStyleID;
if (R.id.item_depththeme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.DEPTH);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_skytheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.SKY);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_goldentheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.GOLDEN);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_memortheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.MEMOR);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_taotheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.TAO);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
} else if (R.id.item_defaulttheme == item.getItemId()) {
nThemeStyleID = AESThemeBean.getThemeStyleID(AESThemeBean.ThemeType.AES);
saveThemeStyleID(activity.getApplicationContext(), nThemeStyleID);
return true;
}

View File

@@ -6,24 +6,30 @@ package cc.winboll.studio.libaes.views;
* @Describe AOneHundredPercantClickToCommitSeekBar
*/
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.SeekBar;
import cc.winboll.studio.libappbase.LogUtils;
public class AOHPCTCSeekBar extends SeekBar {
public static final String TAG = "AOHPCTCSeekBar";
// 可开始拉动的起始位置(百分比值)
static final int ENABLE_POST_PERCENT_X = 20;
// 最小拉动值,滑块拉动值要超过这个值,确定事件才会提交。
static final int TO_MIN_VALUE = 15;
volatile int thumbWidth = 1;
volatile int progressBarWidth = 1;
// 设置按钮模糊右边边缘像素
volatile int blurRightDP = 1;
// 是否从起点拉动的标志
volatile boolean isStartSeek = false;
// 外部接口对象,确定事件提交会调用该对象的方法
OnOHPCListener mOnOHPCListener;
// 是否从起点拉动的标志
boolean mIsStartTo = false;
// 拉动的滑动值
int mnTo = 0;
public void setBlurRightDP(int blurRight) {
this.blurRightDP = blurRight;
}
public void setOnOHPCListener(OnOHPCListener listener) {
mOnOHPCListener = listener;
@@ -35,83 +41,68 @@ public class AOHPCTCSeekBar extends SeekBar {
public AOHPCTCSeekBar(Context context) {
super(context);
initView(context);
}
public AOHPCTCSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
//LogUtils.d(TAG, "AOHPCTCSeekBar(...)");
// 获得TypedArray
//TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AToolbar);
// 获得attrs.xml里面的属性值,格式为:名称_属性名,后面是默认值
//int colorBackgroud = a.getColor(R.styleable.ACard_backgroudColor, context.getColor(R.color.colorACardBackgroung));
//int centerColor = a.getColor(R.styleable.AToolbar_centerColor, context.getColor(R.color.colorAToolbarCenterColor));
//int endColor = a.getColor(R.styleable.AToolbar_endColor, context.getColor(R.color.colorAToolbarEndColor));
//float tSize = a.getDimension(R.styleable.CustomView_tSize, 35);
//p.setColor(tColor);
//p.setTextSize(tSize);
//Drawable drawable = context.getDrawable(R.drawable.frame_atoolbar);
//setBackground(context.getDrawable(R.drawable.acard_frame_main));
// 返回一个绑定资源结束的信号给资源
//a.recycle();
initView(context);
}
public AOHPCTCSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
void initView(Context context) {
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//LogUtils.d(TAG, "ACTION_DOWN");
// 有效的拖动起始位置(ENABLE_POST_PERCENT_X)%
int nEnablePostX = ((getRight() - getLeft()) * ENABLE_POST_PERCENT_X / 100) + getLeft();
if ((getLeft() < event.getX())
&& (event.getX() < nEnablePostX)) {
//LogUtils.d(TAG, "event.getX() is " + Float.toString(event.getX()));
mIsStartTo = true;
return super.dispatchTouchEvent(event);
}
if (!mIsStartTo) {
resetView();
return false;
if (thumbWidth + blurRightDP > event.getX() && event.getX() > 0) {
getParent().requestDisallowInterceptTouchEvent(true);
isStartSeek = true;
}
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
//LogUtils.d(TAG, "ACTION_MOVE");
if (mIsStartTo) {
mnTo++;
if (isStartSeek) {
super.dispatchTouchEvent(event);
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
//LogUtils.d(TAG, Integer.toString(getProgress()));
// 提交100%确定事件
if ((getProgress() == 100) && (mnTo > TO_MIN_VALUE)) {
//LogUtils.d(TAG, "Commit mnTo is " + Integer.toString(mnTo));
} else if (event.getAction() == MotionEvent.ACTION_UP
|| event.getAction() == MotionEvent.ACTION_CANCEL) {
getParent().requestDisallowInterceptTouchEvent(false);
if (getProgress() == progressBarWidth) {
mOnOHPCListener.onOHPCommit();
//resetView();
//return true;
}
resetView();
return false;
// 重置控件状态
setProgress(0);
isStartSeek = false;
}
//LogUtils.d(TAG, "dispatchTouchEvent End");
return super.dispatchTouchEvent(event);
return true;
}
// 重置控件状态
//
void resetView() {
setProgress(0);
mnTo = 0;
mIsStartTo = false;
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
//int height = MeasureSpec.getSize(heightMeasureSpec);
//LogUtils.d(TAG, String.format("width %d height %d", width, height));
// 获取SeekBar的图标宽度
Drawable thumbDrawable = getThumb();
if (thumbDrawable != null) {
// 获取图标宽度
thumbWidth = thumbDrawable.getIntrinsicWidth();
}
// 获取进度条宽度
progressBarWidth = width;
//LogUtils.d(TAG, String.format("thumbWidth %d progressBarWidth %d", thumbWidth, progressBarWidth));
// 设置图标位置
setThumbOffset(0);
// 设置进度条刻度
setMax(progressBarWidth);
}
}

View File

@@ -0,0 +1,23 @@
package cc.winboll.studio.libaes.winboll;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/24 08:23:40
* @Describe WinBoll 活动窗口通用接口
*/
import android.content.Context;
import android.widget.Toolbar;
import cc.winboll.studio.libapputils.bean.APPInfo;
public interface IWinBollActivity {
public static final String TAG = "IWinBollActivity";
// 获取应用资源上下文
abstract public Context getApplicationContext();
abstract public APPInfo getAppInfo();
abstract public String getTag();
abstract public Toolbar initToolBar();
abstract public boolean isEnableDisplayHomeAsUp();
abstract public boolean isAddWinBollToolBar();
}

View File

@@ -0,0 +1,97 @@
package cc.winboll.studio.libaes.winboll;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/24 08:24:52
*/
import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.utils.ToastUtils;
public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
public static final String TAG = "MyActivityLifecycleCallbacks";
public String mInfo = "";
public MyActivityLifecycleCallbacks() {
}
void createActivityeInfo(Activity activity) {
StringBuilder sb = new StringBuilder();
Intent receivedIntent = activity.getIntent();
sb.append("\nCallingActivity : \n");
if (activity.getCallingActivity() != null) {
sb.append(activity.getCallingActivity().getPackageName());
}
sb.append("\nReceived Intent Package : \n");
sb.append(receivedIntent.getPackage());
Bundle extras = receivedIntent.getExtras();
if (extras != null) {
for (String key : extras.keySet()) {
sb.append("\nIntentInfo");
sb.append("\n键: ");
sb.append(key);
sb.append(", 值: ");
sb.append(extras.get(key));
//Log.d("IntentInfo", "键: " + key + ", 值: " + extras.get(key));
}
}
mInfo = sb.toString();
//Log.d("IntentInfo", "发送Intent的应用包名: " + senderPackage);
}
public void showActivityeInfo() {
ToastUtils.show("ActivityeInfo : " + mInfo);
LogUtils.d(TAG, "ActivityeInfo : " + mInfo);
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
// 在这里可以做一些初始化相关的操作例如记录Activity的创建时间等
//System.out.println(activity.getLocalClassName() + " was created");
LogUtils.d(TAG, activity.getLocalClassName() + " was created");
createActivityeInfo(activity);
}
@Override
public void onActivityStarted(Activity activity) {
//System.out.println(activity.getLocalClassName() + " was started");
LogUtils.d(TAG, activity.getLocalClassName() + " was started");
//createActivityeInfo(activity);
}
@Override
public void onActivityResumed(Activity activity) {
//System.out.println(activity.getLocalClassName() + " was resumed");
LogUtils.d(TAG, activity.getLocalClassName() + " was resumed");
//createActivityeInfo(activity);
}
@Override
public void onActivityPaused(Activity activity) {
//System.out.println(activity.getLocalClassName() + " was paused");
LogUtils.d(TAG, activity.getLocalClassName() + " was paused");
}
@Override
public void onActivityStopped(Activity activity) {
//System.out.println(activity.getLocalClassName() + " was stopped");
LogUtils.d(TAG, activity.getLocalClassName() + " was stopped");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
// 可以在这里添加保存状态的自定义逻辑
}
@Override
public void onActivityDestroyed(Activity activity) {
//System.out.println(activity.getLocalClassName() + " was destroyed");
LogUtils.d(TAG, activity.getLocalClassName() + " was destroyed");
}
}

View File

@@ -0,0 +1,318 @@
package cc.winboll.studio.libaes.winboll;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/24 08:25:43
* @Describe 应用活动窗口管理器
* 参考
* android 类似微信小程序多任务窗口 及 设置 TaskDescription 修改 icon 和 label
* https://blog.csdn.net/qq_29364417/article/details/109379915?app_version=6.4.2&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22109379915%22%2C%22source%22%3A%22weixin_38986226%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app
*/
import android.app.ActivityManager;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import cc.winboll.studio.libappbase.LogUtils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class WinBollActivityManager {
// public static final String TAG = "WinBollActivityManager";
// public static final String EXTRA_TAG = "EXTRA_TAG";
//
// public static enum WinBollUI_TYPE {
// Aplication, // 退出应用后,保持最近任务栏任务记录主窗口
// Service // 退出应用后,清理所有最近任务栏任务记录窗口
// };
//
// // 应用类型标志
// volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
//
// Context mContext;
// MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
// static WinBollActivityManager _mWinBollActivityManager;
// static Map<String, IWinBollActivity> _mapIWinBollList;
// IWinBollActivity firstIWinBollActivity;
//
// public WinBollActivityManager(Context context) {
// mContext = context;
// LogUtils.d(TAG, "WinBollActivityManager()");
// _mapIWinBollList = new HashMap<String, IWinBollActivity>();
// }
//
// public static synchronized WinBollActivityManager getInstance(Context context) {
// LogUtils.d(TAG, "getInstance");
// if (_mWinBollActivityManager == null) {
// LogUtils.d(TAG, "_mWinBollActivityManager == null");
// _mWinBollActivityManager = new WinBollActivityManager(context);
// }
// return _mWinBollActivityManager;
// }
//
// //
// // 设置 WinBoll 应用 UI 类型
// //
// public synchronized static void setWinBollUI_TYPE(WinBollUI_TYPE mWinBollUI_TYPE) {
// _mWinBollUI_TYPE = mWinBollUI_TYPE;
// }
//
// //
// // 获取 WinBoll 应用 UI 类型
// //
// public synchronized static WinBollUI_TYPE getWinBollUI_TYPE() {
// return _mWinBollUI_TYPE;
// }
//
// //
// // 把Activity添加到管理中
// //
// public <T extends IWinBollActivity> void add(T iWinBoll) {
// if (isActive(iWinBoll.getTag())) {
// LogUtils.d(TAG, String.format("add(...) %s is active.", iWinBoll.getTag()));
// } else {
// // 设置起始活动窗口,以便最后退出时提问
// if (firstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
// firstIWinBollActivity = iWinBoll;
// }
//
// // 添加到活动窗口列表
// _mapIWinBollList.put(iWinBoll.getTag(), iWinBoll);
// LogUtils.d(TAG, String.format("Add activity : %s\n_mapActivityList.size() : %d", iWinBoll.getTag(), _mapIWinBollList.size()));
// }
// }
//
//
// //
// // activity: 为 null 时,
// // intent.putExtra 函数 EXTRA_TAG 参数为 tag
// // activity: 不为 null 时,
// // intent.putExtra 函数 "tag" 参数为 activity.getTag()
// //
// public <T extends IWinBollActivity> void startWinBollActivity(Context context, Class<T> clazz) {
// try {
// // 如果窗口已存在就重启窗口
// String tag = clazz.newInstance().getTag();
// if (isActive(tag)) {
// resumeActivity(context, tag);
// return;
// }
//
// // 新建一个任务窗口
// Intent intent = new Intent(context, clazz);
// //打开多任务窗口 flags
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
// intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.putExtra(EXTRA_TAG, tag);
// mContext.startActivity(intent);
// } catch (InstantiationException | IllegalAccessException e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// }
// }
//
// public <T extends IWinBollActivity> void startWinBollActivity(Context context, Intent intent, Class<T> clazz) {
// try {
// // 如果窗口已存在就重启窗口
// String tag = clazz.newInstance().getTag();
// if (isActive(tag)) {
// resumeActivity(context, tag);
// return;
// }
//
// // 新建一个任务窗口
// //Intent intent = new Intent(context, clazz);
// //打开多任务窗口 flags
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
// intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.putExtra(EXTRA_TAG, tag);
// mContext.startActivity(intent);
// } catch (InstantiationException | IllegalAccessException e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// }
// }
//
// public boolean isFirstIWinBollActivity(IWinBollActivity iWinBollActivity) {
// return firstIWinBollActivity != null && firstIWinBollActivity == iWinBollActivity;
// }
//
// //
// // 判断 tag绑定的 MyActivity是否存在
// //
// public boolean isActive(String tag) {
// //printAvtivityListInfo();
// IWinBollActivity iWinBoll = getIWinBoll(tag);
// if (iWinBoll != null) {
// LogUtils.d(TAG, "isActive(...) activity != null tag " + tag);
// //ToastUtils.show("activity != null tag " + tag);
// //判断是否为 BaseActivity,如果已经销毁,则移除
// if (iWinBoll.getActivity().isFinishing() || iWinBoll.getActivity().isDestroyed()) {
// _mapIWinBollList.remove(iWinBoll.getTag());
// //_mWinBollActivityList.remove(activity);
// LogUtils.d(TAG, String.format("isActive(...) remove activity.\ntag : %s", tag));
// return false;
// } else {
// LogUtils.d(TAG, String.format("isActive(...) activity is exist.\ntag : %s", tag));
// return true;
// }
// } else {
// LogUtils.d(TAG, String.format("isActive(...) activity == null\ntag : %s", tag));
// return false;
// }
// }
//
// static IWinBollActivity getIWinBoll(String tag) {
// return _mapIWinBollList.get(tag);
// }
//
// //
// // 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
// //
// public <T extends IWinBollActivity> void resumeActivity(Context context, String tag) {
// LogUtils.d(TAG, "resumeActivty");
// T iWinBoll = (T)getIWinBoll(tag);
// //LogUtils.d(TAG, "activity " + activity.getTag());
// if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
// resumeActivity(context, iWinBoll);
// }
// }
//
// //
// // 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
// //
// public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) {
// ActivityManager am = (ActivityManager) iWinBoll.getActivity().getSystemService(Context.ACTIVITY_SERVICE);
// //返回启动它的根任务home 或者 MainActivity
// Intent intent = new Intent(context, iWinBoll.getClass());
// TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
// stackBuilder.addNextIntentWithParentStack(intent);
// stackBuilder.startActivities();
// //moveTaskToFront(YourTaskId, 0);
// LogUtils.d(TAG, "am.moveTaskToFront");
// //ToastUtils.show("resumeActivity am.moveTaskToFront");
// am.moveTaskToFront(iWinBoll.getActivity().getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
// }
//
//
// //
// // 结束所有 Activity
// //
// public void finishAll() {
// try {
// for (String key : _mapIWinBollList.keySet()) {
// //System.out.println("Key: " + key + ", Value: " + _mapActivityList.get(key));
// IWinBollActivity iWinBoll = _mapIWinBollList.get(key);
// //ToastUtils.show("finishAll() activity");
// if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
// //ToastUtils.show("activity != null ...");
// if (getWinBollUI_TYPE() == WinBollUI_TYPE.Service) {
// // 结束窗口和最近任务栏, 建议前台服务类应用使用,可以方便用户再次调用 UI 操作。
// iWinBoll.getActivity().finishAndRemoveTask();
// //ToastUtils.show("finishAll() activity.finishAndRemoveTask();");
// } else if (getWinBollUI_TYPE() == WinBollUI_TYPE.Aplication) {
// // 结束窗口保留最近任务栏,建议前台服务类应用使用,可以保持应用的系统自觉性。
// iWinBoll.getActivity().finish();
// //ToastUtils.show("finishAll() activity.finish();");
// } else {
// LogUtils.d(TAG, "WinBollApplication.WinBollUI_TYPE error.");
// //ToastUtils.show("WinBollApplication.WinBollUI_TYPE error.");
// }
// }
// }
// } catch (Exception e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// }
// }
//
// //
// // 结束指定Activity
// //
// public <T extends IWinBollActivity> void finish(T iWinBoll) {
// try {
// if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) {
// //根据tag 移除 MyActivity
// //String tag= activity.getTag();
// //_mWinBollActivityList.remove(tag);
// //ToastUtils.show("remove");
// //ToastUtils.show("_mWinBollActivityArrayMap.size() " + Integer.toString(_mWinBollActivityArrayMap.size()));
//
// // 窗口回调规则:
// // [] 当前窗口位置 >> 调度出的窗口位置
// // ★:[0] 1 2 3 4 >> 1
// // ★0 1 [2] 3 4 >> 1
// // ★0 1 2 [3] 4 >> 2
// // ★0 1 2 3 [4] >> 3
// // ★:[0] >> 直接关闭当前窗口
// LogUtils.d(TAG, "finish no yet.");
// IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll);
// iWinBoll.getActivity().finish();
// if (preIWinBoll != null) {
// resumeActivity(mContext, preIWinBoll);
// }
// }
//
// } catch (Exception e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// }
// }
//
// //
// // 获取窗口队列中的前一个窗口
// //
// IWinBollActivity getPreIWinBoll(IWinBollActivity iWinBoll) {
// try {
// boolean bingo = false;
// IWinBollActivity preIWinBoll = null;
// for (Map.Entry<String, IWinBollActivity> entity : _mapIWinBollList.entrySet()) {
// if (entity.getKey().equals(iWinBoll.getTag())) {
// bingo = true;
// LogUtils.d(TAG, "bingo");
// break;
// }
// preIWinBoll = entity.getValue();
// }
//
// if (bingo) {
// return preIWinBoll;
// }
// } catch (Exception e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// }
//
// return null;
// }
//
// //
// // 从管理列表中移除管理项
// //
// public <T extends IWinBollActivity> boolean registeRemove(T activity) {
// IWinBollActivity iWinBollTest = _mapIWinBollList.get(activity.getTag());
// if (iWinBollTest != null) {
// _mapIWinBollList.remove(activity.getTag());
// return true;
// }
// return false;
// }
//
// //
// // 打印管理列表项列表里的信息
// //
// public static void printIWinBollListInfo() {
// //LogUtils.d(TAG, "printAvtivityListInfo");
// if (!_mapIWinBollList.isEmpty()) {
// StringBuilder sb = new StringBuilder("Map entries : " + Integer.toString(_mapIWinBollList.size()));
// Iterator<Map.Entry<String, IWinBollActivity>> iterator = _mapIWinBollList.entrySet().iterator();
// while (iterator.hasNext()) {
// Map.Entry<String, IWinBollActivity> entry = iterator.next();
// sb.append("\nKey: " + entry.getKey() + ", \nValue: " + entry.getValue().getTag());
// //ToastUtils.show("\nKey: " + entry.getKey() + ", Value: " + entry.getValue().getTag());
// }
// sb.append("\nMap entries end.");
// LogUtils.d(TAG, sb.toString());
// } else {
// LogUtils.d(TAG, "The map is empty.");
// }
// }
}

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="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0,0 1,21 16.5V20A1,1 0,0 1,20 21A17,17 0,0 1,3 4A1,1 0,0 1,4 3H7.5A1,1 0,0 1,8.5 4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z"/>
</vector>

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/activitylibraryFrameLayout1"/>
</LinearLayout>

View File

@@ -2,7 +2,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
@@ -12,49 +12,49 @@
android:layout_height="wrap_content"
android:text="AOHPCTCSeekBar"/>
<cc.winboll.studio.libaes.views.AOHPCTCSeekBar
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/fragmentviewpageAOHPCTCSeekBar1"/>
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:id="@+id/fragmentviewpageViewPager1"/>
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:id="@+id/fragmentviewpageViewPager1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:gravity="center"
android:id="@+id/fragmentviewpageLinearLayout1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:gravity="center"
android:id="@+id/fragmentviewpageLinearLayout1">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
tools:ignore="ContentDescription"/>
</LinearLayout>
</LinearLayout>
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="300dp"
android:id="@+id/logview"/>
</LinearLayout>

View File

@@ -11,6 +11,25 @@
android:layout_height="wrap_content"
android:text="AOHPCTCSeekBar"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<cc.winboll.studio.libaes.views.AOHPCTCSeekBar
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/fragmentviewpageAOHPCTCSeekBar1"
android:padding="10dp"/>
<cc.winboll.studio.libaes.views.AOHPCTCSeekBar
android:layout_width="300dp"
android:layout_height="wrap_content"
android:id="@+id/fragmentviewpageAOHPCTCSeekBar2"
android:padding="10dp"/>
</LinearLayout>
</LinearLayout>

View File

@@ -32,6 +32,13 @@
<attr name="attrASupportToolbarEndColor"/>
</declare-styleable>
<declare-styleable name="AButton">
<attr name="attrAButtonTextColor" format="color" />
<attr name="attrAButtonPrimary" format="color" />
<attr name="attrAButtonPrimaryDark" format="color" />
<attr name="attrAButtonAccent" format="color" />
</declare-styleable>
<attr name="ActionSheetList" format="reference"/>
<!--<declare-styleable name="AToolbarStyle">
<attr name="attrAToolbarStartColor" format="color" />

View File

@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 默认方案 -->
<color name="colorPrimary">#FF03AB4E</color>
<color name="colorPrimaryDark">#FF027C39</color>
<color name="colorAccent">#FF3DDC84</color>
<color name="colorToastFrame">#FFA9A9A9</color>
<color name="colorText">#FFFFFB8D</color>
<color name="colorToastFrame">#FFA9A9A9</color>
<color name="colorToastShadow">#FF000000</color>
<color name="colorToastBackgroung">#FFFFFFFF</color>
<color name="colorAToolbarStartColor">#FF7D3F12</color>
@@ -14,16 +16,16 @@
<color name="colorACardShadow">@color/colorPrimaryDark</color>
<color name="colorACardFrame">@color/colorPrimary</color>
<color name="colorACardBackgroung">@color/colorAccent</color>
<color name="colorATickProgressBarBackgroung">@color/colorAccent</color>
<color name="colorATickProgressBarProgress">@color/colorPrimary</color>
<color name="colorOHPCTSBackground">@color/colorAccent</color>
<color name="colorOHPCTSSecondaryProgress">@color/colorPrimary</color>
<color name="colorOHPCTSProgress">@color/colorPrimaryDark</color>
<!-- -->
<!-- 调试方案
<color name="colorPrimary">#FF727272</color>
<color name="colorPrimaryDark">#FF444444</color>
@@ -39,5 +41,5 @@
<color name="colorATickProgressBarBackgroung">#FF6DC4E2</color>
<color name="colorATickProgressBarProgress">#FF22B0E1</color>
-->
-->
</resources>

View File

@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorPrimary">#FF03AB4E</item>
<item name="colorPrimaryDark">#FF027C39</item>
<item name="colorAccent">#FF3DDC84</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/AESAToolbar</item>
<item name="aSupportToolbar">@style/AESASupportToolbar</item>
@@ -24,158 +23,196 @@
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="DefaultAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF03AB4E</item>
<item name="colorPrimaryDark">#FF027C39</item>
<item name="colorAccent">#FF3DDC84</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/DefaultAToolbar</item>
<item name="aSupportToolbar">@style/DefaultASupportToolbar</item>
</style>
<style name="DefaultAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="DefaultASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="DepthAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="DepthAESTheme" parent="AESTheme">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF2566FE</item>
<item name="colorPrimaryDark">#FF1359FF</item>
<item name="colorAccent">#FF8BAEFF</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/DepthAToolbar</item>
<item name="aSupportToolbar">@style/DepthASupportToolbar</item>
</style>
<style name="DepthAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="DepthASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="SkyAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="SkyAESTheme" parent="AESTheme">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF1E98D4</item>
<item name="colorPrimaryDark">#FF046A9C</item>
<item name="colorAccent">#FF8CD9FF</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/SkyAToolbar</item>
<item name="aSupportToolbar">@style/SkyASupportToolbar</item>
</style>
<style name="SkyAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="SkyASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="GoldenAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="GoldenAESTheme" parent="AESTheme">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FFFFE22A</item>
<item name="colorPrimaryDark">#FFAE9600</item>
<item name="colorAccent">#FFFFED78</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/GoldenAToolbar</item>
<item name="aSupportToolbar">@style/GoldenASupportToolbar</item>
</style>
<style name="GoldenAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="GoldenASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="MemorAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="MemorAESTheme" parent="AESTheme">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FFCE1ED4</item>
<item name="colorPrimaryDark">#FFB500BC</item>
<item name="colorAccent">#FFE653EB</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/MemorAToolbar</item>
<item name="aSupportToolbar">@style/MemorASupportToolbar</item>
</style>
<style name="MemorAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="MemorASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="TaoAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="TaoAESTheme" parent="AESTheme">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF9F9F9F</item>
<item name="colorPrimaryDark">#FF5E5E5E</item>
<item name="colorAccent">#FFD9D9D9</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/TaoAToolbar</item>
<item name="aSupportToolbar">@style/TaoASupportToolbar</item>
</style>
<!--<style name="AESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/AESAToolbar</item>
<item name="aSupportToolbar">@style/AESASupportToolbar</item>
</style>
<style name="AESAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="AESASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>-->
<!--<style name="DepthAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF2566FE</item>
<item name="colorPrimaryDark">#FF1359FF</item>
<item name="colorAccent">#FF8BAEFF</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/DepthAToolbar</item>
<item name="aSupportToolbar">@style/DepthASupportToolbar</item>
</style>
<style name="DepthAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="DepthASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="SkyAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF1E98D4</item>
<item name="colorPrimaryDark">#FF046A9C</item>
<item name="colorAccent">#FF8CD9FF</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/SkyAToolbar</item>
<item name="aSupportToolbar">@style/SkyASupportToolbar</item>
</style>
<style name="SkyAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="SkyASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="GoldenAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FFFFE22A</item>
<item name="colorPrimaryDark">#FFAE9600</item>
<item name="colorAccent">#FFFFED78</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/GoldenAToolbar</item>
<item name="aSupportToolbar">@style/GoldenASupportToolbar</item>
</style>
<style name="GoldenAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="GoldenASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="MemorAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FFCE1ED4</item>
<item name="colorPrimaryDark">#FFB500BC</item>
<item name="colorAccent">#FFE653EB</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/MemorAToolbar</item>
<item name="aSupportToolbar">@style/MemorASupportToolbar</item>
</style>
<style name="MemorAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="MemorASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="TaoAESTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorTextColor">#FF000000</item>
<item name="colorPrimary">#FF9F9F9F</item>
<item name="colorPrimaryDark">#FF5E5E5E</item>
<item name="colorAccent">#FFD9D9D9</item>
<item name="android:textColor">#FF000000</item>
<item name="aToolbar">@style/TaoAToolbar</item>
<item name="aSupportToolbar">@style/TaoASupportToolbar</item>
</style>
<style name="TaoAToolbar">
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
<item name="attrAToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrAToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrAToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrAToolbarEndColor">?attr/colorAccent</item>
</style>
<style name="TaoASupportToolbar">
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>
<item name="attrASupportToolbarTitleTextColor">?attr/colorTextColor</item>
<item name="attrASupportToolbarStartColor">?attr/colorPrimaryDark</item>
<item name="attrASupportToolbarCenterColor">?attr/colorPrimary</item>
<item name="attrASupportToolbarEndColor">?attr/colorAccent</item>
</style>-->
<!--<style name="AToolbar">
<item name="attrAToolbarTitleTextColor">#FF2DDA27</item>
<item name="attrAToolbarStartColor">#FF2DDA27</item>
<item name="attrAToolbarCenterColor">#FF2DDA27</item>
<item name="attrAToolbarEndColor">#FF2DDA27</item>
<item name="attrAToolbarTitleTextColor">#FF2DDA27</item>
<item name="attrAToolbarStartColor">#FF2DDA27</item>
<item name="attrAToolbarCenterColor">#FF2DDA27</item>
<item name="attrAToolbarEndColor">#FF2DDA27</item>
</style>-->
<!--对话框的样式-->

View File

@@ -21,4 +21,32 @@ android {
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
// 权限请求框架https://github.com/getActivity/XXPermissions
implementation 'com.github.getActivity:XXPermissions:18.63'
// 下拉控件
implementation 'com.baoyz.pullrefreshlayout:library:1.2.0'
// 拼音搜索
// https://mvnrepository.com/artifact/com.github.open-android/pinyin4j
implementation 'com.github.open-android:pinyin4j:2.5.0'
// SSH
implementation 'com.jcraft:jsch:0.1.55'
// Html 解析
implementation 'org.jsoup:jsoup:1.13.1'
// 二维码类库
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
// 网络连接类库
implementation 'com.squareup.okhttp3:okhttp:4.4.1'
// Android 类库
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.viewpager:viewpager:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
implementation 'androidx.fragment:fragment:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'cc.winboll.studio:libappbase:15.0.5'
implementation 'cc.winboll.studio:libapputils:15.0.2'
}