带有一组色彩动态绘画的Android图像按钮

问题描述 投票:0回答:1

我想创建一个非常复杂的按钮,但是现在当我面对它的更多技术方面时,我不确定如何创建它。

我有一个带有自定义纹理(android:background)的ImageButton,并在其顶部有一个自定义图像(android:src)。但这是我想要的基本按钮,我想到的成品还有3个其他的色彩动态可绘制对象。本质上,每次按下按钮时,就像电子设备上的LED一样,一个不同的可绘制对象将“点亮”。

这是我遇到的障碍,因为据我所知,我不能同时将多个可绘制对象添加到一个按钮上(并分别进行修改)。另一种选择是创建4种不同的纹理(切换灯光效果),并在按下按钮后切换背景图像,但这将是最不高效的方法。更不用说以这种方式进行操作,很可能会带来与可绘制内容重叠的问题。由于不同的屏幕尺寸会更改按钮的尺寸,因此可绘制内容的高度可能与所讨论的“ LED”重叠。

我不相信您可以将LinearLayout嵌套在按钮内,但这就是我的想法。否则,我听说有人谈论将线性布局制作成按钮,然后放弃Button小部件。与上述潜在解决方案相比,这是否值得进行额外的工作?

实际上,正如我在写这篇文章时,我可以在按钮上方或下方的单独线性布局中包含可绘制对象,但是我担心这会如何影响设计。我喜欢将它放在按钮内,因为它在使用空间方面效率更高。

否则,将不胜感激。

更新:我已经开始实施使用不同背景的版本。到目前为止,似乎前端计算的数量(用于侦听器,更改模型信息和更改背景)正在使我的其他流程陷入混乱。我仍然好奇这是否是最好的方法,或者也许我需要开始将一些计算放在不同的线程上以节省空间。

android textures android-drawable android-imagebutton
1个回答
0
投票

尝试一下:

Drawable unwrappedDrawable = AppCompatResources.getDrawable(context, R.drawable.my_drawable); 
Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable);
DrawableCompat.setTint(wrappedDrawable, Color.RED); 

使用DrawableCompat很重要,因为它提供了向后兼容性和API 22及更早版本设备的错误修复

© www.soinside.com 2019 - 2024. All rights reserved.