根据输入以编程方式设置可绘制对象状态



我有自定义的可绘制对象来代替按钮。例如,camButton打开本机相机,以便用户可以拍照。

camButton提供了资源,因此可绘制对象可以是白色或绿色。这是camButton应该表现的方式:

1( 默认的无输入状态为白色。

2( 提供输入的状态为绿色。如果用户已成功拍摄图片但未将其删除,则可绘制对象为绿色表示这一点。

3( 当按钮为白色时按下按钮应将其变为绿色,直到用户松开按钮。

4( 当按钮为绿色时按下按钮不执行任何操作。

下面是测试类似内容selector。但是此选择器仅在按下按钮时更改按钮的颜色。它解决了上面的 #1 和 #3,但不是 #2 或 #4。

cam_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_pressed="true"/> 
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_long_pressable="true"/> 
    <!-- white --> <item android:drawable="@drawable/cam_normal"/> 
</selector>

这就是选择器在我的主布局中的实现方式:

<Button
    android:id="@+id/camButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@drawable/cam_selector"/>

在我的应用程序中,我测试以查看是否使用布尔值提供了输入。

问:如何根据代码中的布尔值(或其他方式(将camButton的状态设置为@drawable/cam_pressed

如果我不清楚,或者如果您需要更多信息,请告诉我。任何建议不胜感激。谢谢!

Button button = (Button) findViewById(R.id.camButton);      
if(camPressed){
    button.setBackground(getResources().getDrawable(R.drawable.cam_pressed))
 } else{
     //other stuff
 }

相关内容

  • 没有找到相关文章

最新更新