Load adaptive icon properly
This commit is contained in:
parent
2c563ec9e2
commit
c460571a3e
|
|
@ -74,5 +74,6 @@ dependencies {
|
|||
implementation 'com.takisoft.preferencex:preferencex-colorpicker:1.1.0'
|
||||
implementation 'tech.rectifier.preferencex-android:preferencex-simplemenu:88f93154b2'
|
||||
implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar'
|
||||
implementation 'me.zhanghai.android.appiconloader:appiconloader:1.1.0'
|
||||
compileOnly 'de.robv.android.xposed:api:82'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class XposedApp extends Application {
|
|||
public static final String TAG = "XposedApp";
|
||||
private static final File EDXPOSED_PROP_FILE = new File("/system/framework/edconfig.jar");
|
||||
private static XposedApp instance = null;
|
||||
public InstallZipUtil.XposedProp xposedProp;
|
||||
public InstallZipUtil.XposedProp mXposedProp;
|
||||
|
||||
public static XposedApp getInstance() {
|
||||
return instance;
|
||||
|
|
@ -51,7 +51,7 @@ public class XposedApp extends Application {
|
|||
}
|
||||
}
|
||||
synchronized (this) {
|
||||
xposedProp = prop;
|
||||
mXposedProp = prop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ public class AboutActivity extends BaseActivity {
|
|||
if (translator.isEmpty()) {
|
||||
binding.translatorsView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
binding.appIcon.setImageBitmap(XposedApp.getInstance().getAppIconLoader().loadIcon(getApplicationInfo(), false));
|
||||
}
|
||||
|
||||
void setupView(View v, final int url) {
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import org.meowcat.edxposed.manager.databinding.ActivityMainBinding;
|
|||
import org.meowcat.edxposed.manager.util.ModuleUtil;
|
||||
import org.meowcat.edxposed.manager.util.RepoLoader;
|
||||
|
||||
import me.zhanghai.android.appiconloader.AppIconLoader;
|
||||
|
||||
public class MainActivity extends BaseActivity implements RepoLoader.RepoListener, ModuleUtil.ModuleListener {
|
||||
ActivityMainBinding binding;
|
||||
private RepoLoader repoLoader;
|
||||
|
|
@ -70,6 +72,7 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene
|
|||
appMenu.setOnMenuItemClickListener(this::onOptionsItemSelected);
|
||||
appMenu.show();
|
||||
});
|
||||
binding.appIcon.setImageBitmap(XposedApp.getInstance().getAppIconLoader().loadIcon(getApplicationInfo(), false));
|
||||
String installedXposedVersion;
|
||||
try {
|
||||
installedXposedVersion = XposedApp.getXposedProp().getVersion();
|
||||
|
|
@ -90,6 +93,11 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene
|
|||
binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.amber_500));
|
||||
binding.statusIcon.setImageDrawable(getDrawable(R.drawable.ic_warning));
|
||||
}
|
||||
} else if (XposedApp.getXposedVersion() > 0) {
|
||||
binding.statusTitle.setText(R.string.Activated);
|
||||
binding.statusSummary.setText(getString(R.string.version_x, XposedApp.getXposedVersion()));
|
||||
binding.status.setCardBackgroundColor(ContextCompat.getColor(this, R.color.download_status_update_available));
|
||||
binding.statusIcon.setImageDrawable(getDrawable(R.drawable.ic_check_circle));
|
||||
} else {
|
||||
binding.statusTitle.setText(R.string.Install);
|
||||
binding.statusSummary.setText(R.string.InstallDetail);
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
|
|||
String updateDate = dateformat.format(new Date(item.updateTime));
|
||||
holder.timestamps.setText(getString(R.string.install_timestamps, creationDate, updateDate));
|
||||
|
||||
holder.appIcon.setImageDrawable(item.getIcon());
|
||||
holder.appIcon.setImageBitmap(item.getIcon(ModulesActivity.this));
|
||||
|
||||
TextView descriptionText = holder.appDescription;
|
||||
descriptionText.setVisibility(View.VISIBLE);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import java.util.Date;
|
|||
import java.util.Objects;
|
||||
|
||||
import de.robv.android.xposed.installer.util.InstallZipUtil;
|
||||
import me.zhanghai.android.appiconloader.AppIconLoader;
|
||||
|
||||
public class XposedApp extends de.robv.android.xposed.installer.XposedApp implements Application.ActivityLifecycleCallbacks {
|
||||
public static final String TAG = "EdXposedManager";
|
||||
|
|
@ -49,13 +50,14 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem
|
|||
private SharedPreferences pref;
|
||||
private AppCompatActivity currentActivity = null;
|
||||
private boolean isUiLoaded = false;
|
||||
private AppIconLoader appIconLoader;
|
||||
|
||||
public static XposedApp getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static InstallZipUtil.XposedProp getXposedProp() {
|
||||
return de.robv.android.xposed.installer.XposedApp.getInstance().xposedProp;
|
||||
return de.robv.android.xposed.installer.XposedApp.getInstance().mXposedProp;
|
||||
}
|
||||
|
||||
public static void runOnUiThread(Runnable action) {
|
||||
|
|
@ -144,6 +146,13 @@ public class XposedApp extends de.robv.android.xposed.installer.XposedApp implem
|
|||
}
|
||||
|
||||
RepoLoader.getInstance().triggerFirstLoadIfNecessary();
|
||||
|
||||
appIconLoader = new AppIconLoader(getResources().getDimensionPixelSize(
|
||||
R.dimen.app_icon_size), this);
|
||||
}
|
||||
|
||||
public AppIconLoader getAppIconLoader(){
|
||||
return appIconLoader;
|
||||
}
|
||||
|
||||
private void registerReceivers() {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import me.zhanghai.android.appiconloader.AppIconLoader;
|
||||
|
||||
public class AppAdapter extends RecyclerView.Adapter<AppAdapter.ViewHolder> implements Filterable {
|
||||
|
||||
protected final Context context;
|
||||
|
|
@ -173,7 +175,7 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.ViewHolder> impl
|
|||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
ApplicationInfo info = showList.get(position);
|
||||
holder.appIcon.setImageDrawable(info.loadIcon(pm));
|
||||
holder.appIcon.setImageBitmap(XposedApp.getInstance().getAppIconLoader().loadIcon(info, false));
|
||||
holder.appName.setText(InstallApkUtil.getAppLabel(info, pm));
|
||||
try {
|
||||
holder.appVersion.setText(pm.getPackageInfo(info.packageName, 0).versionName);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import android.content.pm.PackageInfo;
|
|||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.FileUtils;
|
||||
|
|
@ -32,6 +33,8 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import me.zhanghai.android.appiconloader.AppIconLoader;
|
||||
|
||||
@SuppressWarnings("OctalInteger")
|
||||
public final class ModuleUtil {
|
||||
// xposedminversion below this
|
||||
|
|
@ -385,23 +388,8 @@ public final class ModuleUtil {
|
|||
return (version != null) && version.code > versionCode;
|
||||
}
|
||||
|
||||
public Drawable getIcon() {
|
||||
if (iconCache != null)
|
||||
return iconCache.newDrawable();
|
||||
|
||||
Intent mIntent = new Intent(Intent.ACTION_MAIN);
|
||||
//mIntent.addCategory(ModulesFragment.SETTINGS_CATEGORY);
|
||||
mIntent.setPackage(app.packageName);
|
||||
List<ResolveInfo> ris = pm.queryIntentActivities(mIntent, 0);
|
||||
|
||||
Drawable result;
|
||||
if (ris == null || ris.size() <= 0)
|
||||
result = app.loadIcon(pm);
|
||||
else
|
||||
result = ris.get(0).activityInfo.loadIcon(pm);
|
||||
iconCache = result.getConstantState();
|
||||
|
||||
return result;
|
||||
public Bitmap getIcon(Context context) {
|
||||
return XposedApp.getInstance().getAppIconLoader().loadIcon(app, false);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
|
|||
|
|
@ -27,22 +27,22 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="72dp"
|
||||
android:orientation="horizontal"
|
||||
android:padding="16dp">
|
||||
android:padding="16dp"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_height="42dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:scaleType="centerCrop"
|
||||
app:srcCompat="@drawable/ic_launcher_foreground" />
|
||||
android:contentDescription="@string/app_name" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:layout_marginStart="14dp"
|
||||
android:text="@string/app_name"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
|
||||
</LinearLayout>
|
||||
|
|
@ -67,7 +67,6 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginLeft="32dp"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
|
|
|
|||
|
|
@ -35,19 +35,17 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="16dp"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:scaleType="centerCrop"
|
||||
app:srcCompat="@drawable/ic_launcher_foreground" />
|
||||
android:contentDescription="@string/app_name" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_toEndOf="@id/app_icon"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:text="@string/app_name"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
<resources>
|
||||
<dimen name="app_icon_size">48dp</dimen>\
|
||||
</resources>
|
||||
|
|
@ -335,4 +335,5 @@
|
|||
<string name="material_design_2">Material Design 2</string>
|
||||
<string name="xposed_description">Enable EdXposed enhancements:\nRemove background restrictions on EdXposed\nDetermine if Xposed is working properly\nPretend to have Xposed Installer installed</string>
|
||||
<string name="status_enhancement">Enhancement mode</string>
|
||||
<string name="version_x">Version %d</string>
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Reference in New Issue