📜  从字符串 android 获取可绘制 (1)

📅  最后修改于: 2023-12-03 14:49:23.201000             🧑  作者: Mango

从字符串 android 获取可绘制

在 Android 应用程序中,可绘制(Drawable)是一种可在屏幕上绘制的图像。通常我们会在 XML 或代码中使用 Drawable 对象来显示图像,但有时我们需要从字符串中获取 Drawable 对象。

方法一:使用 Resources.getIdentifier() 方法

如果您的可绘制资源已经包含在应用程序中,并且您想通过资源名称字符串获取 Drawable,则可以使用 Resources.getIdentifier() 方法。它将返回与给定名称和类型匹配的资源的 ID 值。

Resources res = getResources();
int resourceId = res.getIdentifier("drawable_name", "drawable", getPackageName());
Drawable drawable = res.getDrawable(resourceId);

在上面的代码中,"drawable_name" 是您要获取的 Drawable 的名称字符串。"drawable" 是资源类型,这意味着您正在从 drawable 文件夹中获取资源。最后,getPackageName() 返回您的应用程序的包名。

方法二:使用 Bitmap 和 BitmapDrawable

如果您的 Drawable 不是标准的资源文件,并且您有它的位图数据,则可以使用 BitmapDrawable 将其转换为可绘制对象。

String base64String = "your_base64_encoded_string_here";
byte[] decodedString = Base64.decode(base64String, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
Drawable drawable = new BitmapDrawable(getResources(), bitmap);

在上面的代码中,我们首先将 Base64 编码的字符串解码为字节数组,然后使用 BitmapFactory 将其转换为 Bitmap 对象。最后,我们使用 BitmapDrawable 来创建 Drawable 对象。

请注意,上面的代码示例适用于 Base64 编码的字符串。如果您有其他类型的位图数据,请根据需要修改代码。

方法三:使用 VectorDrawableCompat 和 XmlPullParser

VectorDrawable 是一种从 Android 5.0 开始引入的可绘制对象类型。要从字符串获取 VectorDrawable 可以使用 VectorDrawableCompat 和 XmlPullParser。

String xmlString = "your_xml_string_here";
try {
    XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
    parser.setInput(new StringReader(xmlString));
    Drawable drawable = VectorDrawableCompat.createFromXml(getResources(), parser);
} catch (Exception e) {
    e.printStackTrace();
}

在上面的代码中,我们先将字符串解析为 XmlPullParser 对象,然后使用 VectorDrawableCompat.createFromXml() 方法将其转换为 Drawable 对象。

请注意,要使用 VectorDrawable,您必须在应用程序的 build.gradle 文件中添加支持库依赖项。

dependencies {
    ...
    implementation 'com.android.support:support-vector-drawable:28.0.0'
}
结论

有很多方法可以从字符串获取可绘制对象,每种方法都有其优点和缺点。在选择最合适的方法时,请根据您的特定需求和应用程序的要求进行选择。