Android java ImageButton方法帮助



所以我正在一步步地弄清楚这些东西。然后按我想要的方式切换按钮。但现在我想添加更多的按钮。

       `public class Menu extends Activity{
        ImageButton select;    
        int isClicked = 0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                select = (ImageButton)findViewById(R.id.select);
        select.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                     if (isClicked == 0){
                        select.setImageResource(R.drawable.select_pressed);
                        isClicked = 1;
                     }
                     else{
                        select.setImageResource(R.drawable.select);
                        isClicked = 0;
                     }
                }});
             }
          }`

假设我要复制那个ImageButton方法。如果我要使用新按钮的代码,我将在哪里插入它?

    `<ImageButton 
android:src="@drawable/select"
android:id="@+id/select"
android:layout_height="30dp"
android:layout_width="120dp"
android:background="@null"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true">
    </ImageButton>`

您可以使用按钮上的tag属性来存储状态。然后你可以把你的状态逻辑放在一个单独的方法中,像这样:

public void changeState(View v) {
                     if (v.getTag() == "false"){
                        ((ImageButton)v).setImageResource(R.drawable.select_pressed);
                        v.setTag("true");
                     }
                     else{
                        ((ImageButton)v).setImageResource(R.drawable.select);
                        v.setTag("false");
                     }
                }});

你可以从每个ImageButton的clicklistener调用这个方法,而不需要在应用程序上下文中保存多个ImageButton的状态。

您可以使用main.xml文件中的图形布局编辑器轻松创建图像按钮。为您的新按钮创建一个新的图像按钮对象,并在onCreate()函数中指定点击监听器。

与你的方法不同,Android有一个叫做选择器的东西,它可以根据视图的状态自动改变后台资源。选择器定义在一个单独的可绘制xml文件中,并从使用状态的视图的xml声明中引用。例如:选择器(android_button.xml):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/android_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/android_focused"
          android:state_focused="true" />
    <item android:drawable="@drawable/android_normal" />
</selector>

按钮:

<Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/android_button" />

你仍然需要为每个按钮实现一个点击监听器,但是你将有一个选择器,你可以在所有你想要的按钮中重用,并且表示逻辑已经从你的应用程序的业务逻辑中分离出来。

这个答案中显示的源代码直接来自http://developer.android.com/resources/tutorials/views/hello-formstuff.html#CustomButton在那里你可以读到更完整的解释。

最新更新