问题描述
|
我已经实现了使用选择器XML组件来维护按钮的状态。例如,请参见代码段。
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">
<!-- Non focused states
-->
<item android:state_focused=\"false\" android:state_selected=\"false\"
android:state_pressed=\"false\" android:drawable=\"@drawable/back_arrow_normal\" />
<item android:state_focused=\"false\" android:state_selected=\"true\"
android:state_pressed=\"false\" android:drawable=\"@drawable/back_arrow_hover\" />
<!-- Focused states
-->
<item android:state_focused=\"true\" android:state_selected=\"false\"
android:state_pressed=\"false\" android:drawable=\"@drawable/back_arrow_hover\" />
<item android:state_focused=\"true\" android:state_selected=\"true\"
android:state_pressed=\"false\" android:drawable=\"@drawable/back_arrow_hover\" />
<!-- pressed
-->
<item android:state_pressed=\"true\" android:drawable=\"@drawable/back_arrow_hover\" />
</selector>
使用这个想法,我们应该至少有两个图像。如果我在一个项目中有十个按钮,那么在资源可绘制区域中应该有二十个图像。为了支持多种密度/屏幕尺寸的应用程序,我需要60张(20X3)图像。
我有两种想法,但是我不知道如何实现它们。他们是:
我们必须定义一个方法而不是选择器文件。
我们应该有一张图片,并且需要像iPhone一样更改alpha值。
还有其他最需要的好主意吗?因为这会增加应用程序的大小。
请表达您的想法。
解决方法
我想您按钮的背景不太复杂。如果不是,则可以使用9-patch png,因此,可绘制对象的数量将减少到一组。 9补丁png会根据需要调整大小和缩放比例。
但是,如果背景复杂,则每个分辨率都需要多个资源。