android - 从 SVG 设置自定义按钮选择器位图项

标签 android button svg bitmap

我有一个标准按钮的自定义:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true">
   <layer-list>
     <item android:drawable="@drawable/standard_button_normal_background_layer1"/>
     <item android:drawable="@drawable/standard_button_normal_background_layer0"/>
     <item><bitmap android:gravity="center" android:src="@drawable/the_bitmap" /></item>
   </layer-list>
 </item>

...

</selector>

我需要用从 SVG 文件加载的位图更改位图。我用

http://code.google.com/p/svg-android/

可以生成 PictureDrawable:

SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.icon);
PictureDrawable pd = svg.createPictureDrawable();
imageView.setImageDrawable(pd);

如何访问特定的 <bitmap>项目,如何设置位图?有什么解决办法吗?

编辑:

我想知道我是否可以通过编程方式将图片添加到按钮自定义 <layer-list> 的底部项目。图片来自svg,编译资源上没有。

我需要的结果是一个带有一些自定义图形(由 <layer-list> 定义)的按钮和一个来自 svg 的居中图标。

最佳答案

如果您问如何编写引用从 SVG 加载的图片的 XML 文件,那有点像先有鸡还是先有蛋。部署您的应用程序时,res/中的所有内容都是只读的。因此,通过从一组绘图指令动态加载位图,您可以简单地存储输出的位图。

imageView.onDraw(mBitmapCanvas);

这就是你所能做的。您可以在预构建步骤中创建栅格,但您将失去与您的应用程序 bundle 在一起的矢量的大小优势。

如果您询问如何编辑布局列表,试试这个:

layer-list.xml

<layer-list>
     <item android:drawable="@drawable/standard_button_normal_background_layer1"/>
     <item android:drawable="@drawable/standard_button_normal_background_layer0"/>
     <!-- Remove bitmap -->
</layer-list>

然后当你想使用这个drawable时:

LayerDrawable drawable = (LayerDrawable)getResources().getDrawable(R.drawable.layout_list);
ArrayList<Drawable> layers = new ArrayList<Drawable>();
for(int i=0; i < drawable.getNumberOfLayers(); i++) {
   layers.add(drawable.getDrawable(i);
}

layers.add(new BitmapDrawable(mBitmap));
drawable = new LayerDrawable(layers.toArray(new Drawable[layers.size()]);

关于android - 从 SVG 设置自定义按钮选择器位图项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936825/

相关文章:

java - 在模拟器中打开后,Android应用程序崩溃

c# - WPF 按钮背景问题

css - 将 SVG SMIL 动画转换为 CSS3 动画

ios - 在 iOS 上将 SVG 转换为任意大小的图像

java - 如何在android Mapbox中获取屏幕中心坐标

java - ColorFilter 仅特定颜色

java - 我可以同时使用 SIP 和 P2P 进行 VoIP 吗?

css - 将按钮文本放在一行

Java - 一个文件中的代码和另一文件中的设计(无法识别的 actionPerformed 事件)

javascript - SVG 文档中的 getElementById