gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:58:34 27 4
gpt4 key购买 nike

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

<?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/

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