From ced2805566883e7278ea14a9af14abfc35de1cd4 Mon Sep 17 00:00:00 2001 From: tehcneko <7764726+tehcneko@users.noreply.github.com> Date: Sun, 31 Jan 2021 15:26:19 +0800 Subject: [PATCH] Minor UI adjustments (#19) * Add accent color and medium weight to "Recommended" * Rename "Android System" to System Framework * Remove minWidth and minHeight for checkboxes --- .../manager/adapters/ScopeAdapter.java | 45 ++++++++++++++++--- app/src/main/res/layout/item_module.xml | 10 ++--- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 10 +++++ 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java b/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java index 280493cb..5c8ec3b1 100644 --- a/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java +++ b/app/src/main/java/io/github/lsposed/manager/adapters/ScopeAdapter.java @@ -7,10 +7,17 @@ import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; +import android.text.Spannable; +import android.text.SpannableStringBuilder; import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; +import android.text.style.TypefaceSpan; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -110,7 +117,7 @@ public class ScopeAdapter extends RecyclerView.Adapter rmList.add(info); continue; } - if (checkedList.contains(info.packageName)) { + if (checkedList.contains(info.packageName) || info.packageName.equals("android")) { continue; } if (!preferences.getBoolean("show_modules", false)) { @@ -130,7 +137,7 @@ public class ScopeAdapter extends RecyclerView.Adapter continue; } } - if ((info.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) == 0 && !info.packageName.equals("android")) { + if ((info.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) == 0) { rmList.add(info); continue; } @@ -150,6 +157,17 @@ public class ScopeAdapter extends RecyclerView.Adapter private void sortApps() { Comparator cmp = AppHelper.getAppListComparator(preferences.getInt("list_sort", 0), pm); fullList.sort((a, b) -> { + boolean aAndroid = a.packageName.equals("android"); + boolean bAnrdoid = b.packageName.equals("android"); + if (aAndroid || bAnrdoid) { + if (aAndroid == bAnrdoid) { + return 0; + } else if (aAndroid) { + return -1; + } else { + return 1; + } + } boolean aChecked = checkedList.contains(a.packageName); boolean bChecked = checkedList.contains(b.packageName); if (aChecked == bChecked) { @@ -299,7 +317,8 @@ public class ScopeAdapter extends RecyclerView.Adapter public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.root.setAlpha(enabled ? 1.0f : .5f); PackageInfo info = showList.get(position); - holder.appName.setText(getAppLabel(info.applicationInfo, pm)); + boolean android = info.packageName.equals("android"); + holder.appName.setText(android ? activity.getString(R.string.android_framework) : getAppLabel(info.applicationInfo, pm)); GlideApp.with(holder.appIcon) .load(info) .into(new CustomTarget() { @@ -313,11 +332,25 @@ public class ScopeAdapter extends RecyclerView.Adapter } }); - String description = activity.getString(R.string.app_description, info.packageName, info.versionName); + SpannableStringBuilder sb = new SpannableStringBuilder(android ? "" : activity.getString(R.string.app_description, info.packageName, info.versionName)); + holder.appDescription.setVisibility(View.VISIBLE); if (hasRecommended() && recommendedList.contains(info.packageName)) { - description += "\n" + activity.getString(R.string.requested_by_module); + if (!android) sb.append("\n"); + String recommended = activity.getString(R.string.requested_by_module); + sb.append(recommended); + final ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(activity.getThemedColor(R.attr.colorAccent)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + final TypefaceSpan typefaceSpan = new TypefaceSpan(Typeface.create("sans-serif-medium", Typeface.NORMAL)); + sb.setSpan(typefaceSpan, sb.length() - recommended.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); + } else { + final StyleSpan styleSpan = new StyleSpan(Typeface.BOLD); + sb.setSpan(styleSpan, sb.length() - recommended.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); + } + sb.setSpan(foregroundColorSpan, sb.length() - recommended.length(), sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); + } else if (android) { + holder.appDescription.setVisibility(View.GONE); } - holder.appDescription.setText(description); + holder.appDescription.setText(sb); holder.itemView.setOnCreateContextMenuListener((menu, v, menuInfo) -> { activity.getMenuInflater().inflate(R.menu.menu_app_item, menu); diff --git a/app/src/main/res/layout/item_module.xml b/app/src/main/res/layout/item_module.xml index b946fc37..7040530c 100644 --- a/app/src/main/res/layout/item_module.xml +++ b/app/src/main/res/layout/item_module.xml @@ -9,7 +9,7 @@ android:minHeight="?attr/listPreferredItemHeight" android:paddingVertical="16dp" android:paddingStart="16dp" - android:paddingEnd="16dp"> + android:paddingEnd="24dp"> diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index a52d0882..bd7f08bf 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -159,4 +159,5 @@ 选择推荐的应用? 推荐的应用 由于未选择任何应用,模块 %s 已被禁用。 + 系统框架 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 71cfd6b2..10d6dcdd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -167,4 +167,5 @@ Select recommended apps? Recommended Module %s has been disabled since no app selected. + System Framework diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index edec6256..88c55ab1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,6 +24,16 @@ false + + + +