Android中的按钮状态维护(资源处理)?

时间:2011-05-30 11:36:48

标签: android button selector drawable

我已经实现了使用选择器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>

使用这个想法,我们应该至少有两个图像。如果我在一个项目中有十个按钮,那么我应该在资源drawable中有二十个图像。为了支持多种密度/屏幕尺寸,我需要60(20X3)张图像。

我有两种想法,但我不知道如何实现它们。他们是:

  1. 我们必须定义一个方法而不是选择器文件。
  2. 我们应该有一个图像,我们需要像iPhone一样改变alpha值。
  3. 是否还有其他伟大的想法是最需要的。因为这会增加应用程序的大小。

    请表达您的想法和想法。

1 个答案:

答案 0 :(得分:1)

我想,你的按钮的背景不是太复杂。如果不是,则可以使用9-patch png,因此,drawable的数量将减少到只有一组。 9-patch pngs将根据需要调整大小并进行扩展。

但是,如果bckgrounds很复杂,则需要为每个分辨率分配多个资源。