如何在点击图像按钮时更改图像?

时间:2015-08-27 09:27:16

标签: android android-layout android-intent

我正在制作一个图像按钮。当我点击图像按钮时,我需要更改图像。实际上它只会改变背景图像几秒钟。为什么?

这是我的代码

 <ImageButton android:id="@+id/favorite"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/start"
        android:background="#00ffffff"
        />

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

    <item android:drawable="@drawable/off" /> <!-- default -->
</selector>

当我点击图片按钮时,我需要在图像上显示..?我可以在java方面写吗?我可以写一下图像按钮的点击监听器吗?

2 个答案:

答案 0 :(得分:1)

这就是为什么使用选择器作为按钮背景的原因,图像会根据按钮的状态而改变。如果按下,图像将在&#34; on&#34;并且在正常状态下(没有按下也没有聚焦),图像将被关闭&#34;关闭&#34;。

编辑:

public class MainActivity extends AppCompatActivity {

ImageButton btn;
boolean isPressed;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (ImageButton) findViewById(R.id.btn);
    btn.setBackgroundResource(R.drawable.normal);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isPressed){
                v.setBackgroundResource(R.drawable.normal);
            }else{
                v.setBackgroundResource(R.drawable.pressed);
            }
            isPressed = !isPressed; // reverse
        }
    });


}


  <ImageButton
    android:id="@+id/btn"
    android:text="@string/hello_world" android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

答案 1 :(得分:0)

通过在图像的onClickListener中动态提供绝对路径或互联网网址来更改图像的来源。

image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Here before changing the image you can check if the appropriate                                    //image is set to the view.
                image.setImageResource(R.drawable.on);

        }
});

也可以像这样

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isPressed){
                v.setBackgroundResource(R.drawable.normal);
            }else{
                v.setBackgroundResource(R.drawable.pressed);
            }
            isPressed = !isPressed; // reverse
        }
    });