diff --git a/app/build.gradle b/app/build.gradle index 931883b..62e530b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 66 - versionName "1.7.4" + versionCode 67 + versionName "1.7.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true @@ -29,6 +29,10 @@ android { } } + dataBinding { + enabled true + } + lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bf0e367..b0a6669 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -99,6 +99,14 @@ android:name=".activity.ExitActivity" android:configChanges="keyboardHidden" android:launchMode="singleTask" /> + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - + + + + + + + { holder.iv_icon.setImageDrawable(mContext.getResources().getDrawable(resID)); } } else { - if (AppManager.ADD_NAME.equals(pkg)) { - holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); - } else if (AppManager.UPDATE_NAME.equals(pkg)) { - holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); - } else { - holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); + switch (pkg) { + case AppManager.ADD_NAME: + case AppManager.UPDATE_NAME: + case AppManager.MANUAL_NAME: + holder.iv_icon.setImageDrawable(desktopIcon.getIcon()); + break; + default: + holder.iv_icon.setImageBitmap(BitmapUtils.getIconBitmap(mContext, desktopIcon.getIcon())); + break; } } holder.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (AppManager.ADD_NAME.equals(pkg)) { - mContext.startActivity(new Intent(mContext, PasswordActivity.class)); - } else if (AppManager.UPDATE_NAME.equals(pkg)) { - Intent intent = new Intent(); - ComponentName componentName = new ComponentName("com.uiui.zy", "com.uiui.zy.activity.update.UpdateActivity"); - intent.setComponent(componentName); - mContext.startActivity(intent); - } else { - int setting_other_appInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); - if (setting_other_appInstaller == 0 - && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName() - )) { - ToastUtil.show("已禁止应用打开"); - } else { - OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); - } + switch (pkg) { + case AppManager.ADD_NAME: + mContext.startActivity(new Intent(mContext, PasswordActivity.class)); + break; + case AppManager.UPDATE_NAME: + Intent intent = new Intent(); + ComponentName componentName = new ComponentName("com.uiui.zy", "com.uiui.zy.activity.update.UpdateActivity"); + intent.setComponent(componentName); + mContext.startActivity(intent); + break; + case AppManager.MANUAL_NAME: + mContext.startActivity(new Intent(mContext, ManualActivity.class)); + default: + int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); + if (settingOtherAppInstaller == 0 + && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName() + )) { + ToastUtil.show("已禁止应用打开"); + } else { + OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); + } + break; } } diff --git a/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java new file mode 100644 index 0000000..ff6a125 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/BaseDataBindingActivity.java @@ -0,0 +1,123 @@ +package com.uiui.zyos.base; + +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.ContentView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; +import com.uiui.zyos.R; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +public abstract class BaseDataBindingActivity extends AppCompatActivity implements LifecycleProvider { + public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); + + public BaseDataBindingActivity() { + super(); + } + + @ContentView + public BaseDataBindingActivity(@LayoutRes int contentLayoutId) { + super(contentLayoutId); + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindActivity(lifecycleSubject); + } + + @Override + @CallSuper + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + lifecycleSubject.onNext(ActivityEvent.CREATE); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + initView(); + initData(); + } + + + /** + * 初始化视图 + */ + public abstract void initView(); + + + /** + * 初始化数据 + */ + public abstract void initData(); + + @Override + @CallSuper + protected void onStart() { + super.onStart(); + lifecycleSubject.onNext(ActivityEvent.START); + } + + @Override + @CallSuper + protected void onResume() { + super.onResume(); + lifecycleSubject.onNext(ActivityEvent.RESUME); + } + + @Override + @CallSuper + protected void onPause() { + lifecycleSubject.onNext(ActivityEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + protected void onStop() { + lifecycleSubject.onNext(ActivityEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + protected void onDestroy() { + lifecycleSubject.onNext(ActivityEvent.DESTROY); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java index f7ddb05..a4d9df6 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppPresenter.java @@ -50,12 +50,17 @@ public class AppPresenter implements AppContact.AppPresenter { updateDesktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_update)); desktopIcons.add(desktopIcons.size(), updateDesktopIcon); + DesktopIcon manualIcon = new DesktopIcon(); + manualIcon.setLable("使用手册"); + manualIcon.setPackageName(AppManager.MANUAL_NAME); + manualIcon.setIcon(mContext.getDrawable(R.drawable.icon_manual)); + desktopIcons.add(desktopIcons.size(), manualIcon); + DesktopIcon desktopIcon = new DesktopIcon(); desktopIcon.setLable("添加应用"); desktopIcon.setPackageName(AppManager.ADD_NAME); desktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_add)); desktopIcons.add(desktopIcons.size(), desktopIcon); - mView.setInstalledApp(desktopIcons); } } diff --git a/app/src/main/java/com/uiui/zyos/manager/AppManager.java b/app/src/main/java/com/uiui/zyos/manager/AppManager.java index e995255..8015035 100644 --- a/app/src/main/java/com/uiui/zyos/manager/AppManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/AppManager.java @@ -31,6 +31,7 @@ public class AppManager { public static final String ADD_NAME = "com.zyos.add"; public static final String UPDATE_NAME = "com.zyos.update"; + public static final String MANUAL_NAME = "com.zyos.manual"; private static final String SHOW_PACKAGE_KEY = "SHOW_PACKAGE_KEY"; @SuppressLint("StaticFieldLeak") diff --git a/app/src/main/java/com/uiui/zyos/view/ImageViewAdapter.java b/app/src/main/java/com/uiui/zyos/view/ImageViewAdapter.java new file mode 100644 index 0000000..357e125 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/view/ImageViewAdapter.java @@ -0,0 +1,21 @@ +package com.uiui.zyos.view; + +import android.widget.ImageView; + +import androidx.databinding.BindingAdapter; + +import com.bumptech.glide.Glide; + +public class ImageViewAdapter { + + /** + * 自定义设置图片属性 - 在匹配时自定义命名空间会被忽略 + */ + @BindingAdapter({"imageUrl"}) + public static void loadImage(ImageView imageView, int id) { + Glide.with(imageView.getContext()) + .load(id) + .into(imageView); + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/banner.png b/app/src/main/res/drawable-hdpi/banner.png new file mode 100644 index 0000000..69aae09 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/banner.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_activation.png b/app/src/main/res/drawable-hdpi/icon_activation.png new file mode 100644 index 0000000..f884042 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_activation.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_black_back.png b/app/src/main/res/drawable-hdpi/icon_black_back.png new file mode 100644 index 0000000..8e07ba5 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_black_back.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_control.png b/app/src/main/res/drawable-hdpi/icon_control.png new file mode 100644 index 0000000..676d664 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_control.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_manual.png b/app/src/main/res/drawable-hdpi/icon_manual.png new file mode 100644 index 0000000..274dd97 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_manual.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_more.png b/app/src/main/res/drawable-hdpi/icon_more.png new file mode 100644 index 0000000..9eb4ccd Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_more.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_resource.png b/app/src/main/res/drawable-hdpi/icon_resource.png new file mode 100644 index 0000000..804248a Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_resource.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_search.png b/app/src/main/res/drawable-hdpi/icon_search.png new file mode 100644 index 0000000..67f07bc Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_search.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_service.png b/app/src/main/res/drawable-hdpi/icon_service.png new file mode 100644 index 0000000..d816f85 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_service.png differ diff --git a/app/src/main/res/drawable-hdpi/page_activation.png b/app/src/main/res/drawable-hdpi/page_activation.png new file mode 100644 index 0000000..5dd7788 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/page_activation.png differ diff --git a/app/src/main/res/drawable-hdpi/page_control.png b/app/src/main/res/drawable-hdpi/page_control.png new file mode 100644 index 0000000..f3db11c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/page_control.png differ diff --git a/app/src/main/res/drawable-hdpi/page_resource.png b/app/src/main/res/drawable-hdpi/page_resource.png new file mode 100644 index 0000000..7415e33 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/page_resource.png differ diff --git a/app/src/main/res/drawable-hdpi/page_service.png b/app/src/main/res/drawable-hdpi/page_service.png new file mode 100644 index 0000000..34d2ae2 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/page_service.png differ diff --git a/app/src/main/res/drawable/search_view_bg.xml b/app/src/main/res/drawable/search_view_bg.xml new file mode 100644 index 0000000..d6a8bf8 --- /dev/null +++ b/app/src/main/res/drawable/search_view_bg.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml new file mode 100644 index 0000000..28dbe26 --- /dev/null +++ b/app/src/main/res/layout/activity_about.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_manual.xml b/app/src/main/res/layout/activity_manual.xml new file mode 100644 index 0000000..a03503e --- /dev/null +++ b/app/src/main/res/layout/activity_manual.xml @@ -0,0 +1,412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 285a88f..947f9f5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -37,4 +37,6 @@ #6d888e #E5000000 + #F3F3F3 + #646464