gpt4 book ai didi

android - 如何在 Android 中将 Drawable 转换为 int,反之亦然

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:03 36 4
gpt4 key购买 nike

我想将 Drawable 转换为 int 然后反之亦然。基本上我想将 Arraylist 对象保存到 sharedPrefrence .为此,我实现了 Gson 到 Srtring 的转换方法。如果我在这里使用 Drawable 而不是 int 那么 Gson String 转换会花费很多时间。所以我想使用 int 而不是 Drawable。

 private List<AppInfo> apps = null;

public void setIcon(int icon) {
this.icon = icon;
}

apps.get(position).setIcon(mContext.getResources().getDrawable(apps.get(position).getIcon()));

这里的 AppInfo 在哪里

    public AppInfo(String appname, String pname, String versionName, int versionCode, int icon, int color) {
this.appname = appname;
this.pname = pname;
this.versionName = versionName;
this.versionCode = versionCode;
this.icon = icon;
this.color = color;
}

这是将自定义对象的 ArrayList 转换为字符串的来源,以便我可以将其保存到 SharedPrefrence。

            Gson gson = new Gson();
apps.get(number).setColor(picker.getColor());
String JsonAppsdata = gson.toJson(apps);
System.out.println("Storing="+JsonAppsdata);
utility.StoreData(getApplicationContext(), JsonAppsdata);

最佳答案

Int -> Drawable:

Drawable icon = getResources().getDrawable(42, getTheme());

可绘制 -> 整数:

(我假设,您正在使用应用程序填充 List<AppInfo> apps,其图标已经在应用程序的 res/drawable 文件夹中)

一旦你设置了你的R.drawable.app1ImageView , 你也可以给它一个 tag识别 ImageView 中的资源后来:

    ImageView appIcon1ImageView = (ImageView)findViewById(R.id.app_icon_1);
appIcon1ImageView.setImageDrawable(getDrawable(R.drawable.app1));
appIcon1ImageView.setTag(R.drawable.app1);

......
// Once you need to identify which resource is in ImageView
int drawableId = Integer.parseInt(appIcon1ImageView.getTag().toString());

如果您的图标来自服务器 - 唯一的方法是 to store them to disk然后重新加载它们。 (或者,更好的是,依赖现有的图像缓存解决方案,如 picasso )

更新:没有直接的方法来转换 Drawable进入int ,但在这种特殊情况下,可以获得 int , 而不是 Drawable来自 PackageManager :

ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(apps.get(position).getPname(),1);
int icon= applicationInfo.icon;

关于android - 如何在 Android 中将 Drawable 转换为 int,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481486/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com