Android 如何在单击imagebutton时更改图像?

Android 如何在单击imagebutton时更改图像?,android,android-layout,android-intent,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:backgr

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

这是我的密码

 <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端写吗?我可以在图像按钮的“单击侦听器”上进行写入吗?

这就是为什么您要对按钮背景使用选择器,并且图像会根据按钮的状态而变化。如果按下,图像将打开,并且在其正常状态下未按下且未聚焦,图像将关闭

编辑:

实际上,它改变了背景图像,但只改变了几秒钟。为什么

我认为很明显,drawable中的这些项目是用于用户按下ImageButton或处于正常模式的状态

我可以在java端写吗?我可以在单击图像按钮的侦听器时写入吗

是的,再次是:D如果您想在用户按下时更改它,只需按如下操作:

XML布局:

Java方面,例如onCreate方法

ImageButton favorite;
boolean isFav = false;
public void onCreate(Bundle savedInstanceState){
    ///...
    favorite = findViewById(R.id.favorite);
    favorite.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            isFav = !isFav;
            if (isFav){
                favorite.setImageResource(R.drawable.on);
            }
            else{
                favorite.setImageResource(R.drawable.off);
            }
        }
    });
    ///...
}

通过在映像的onClickListener中动态提供绝对路径或internet url来更改映像的源

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
        }
    });

tenis,但它只显示一秒钟,而不是永久性地在我单击图像时我会在打开应用程序时解释更多它显示图像..当我单击它在图像上显示一秒钟时,我需要在单击图像后永久性地在图像上显示,因为安卓:state_pressed=true在您点击图像时按下按钮时设置可绘制用你的手指扣。当您取消映射时,按钮未按下,Ok,我将向您发布一个示例,您已经定义了一个选择器,并且正在更改android上的图像:state_pressed=true。这就是图像持续几秒钟变化的原因。是的,您可以在单击“侦听器”按钮时更改图像。让我知道要求或重新设计您的问题?我需要在点击图像时更改图像。当用户按下图像按钮时,我需要做同样的事情。实际上图像会更改几秒钟。但我需要永久性更改。我想@Marta已经帮到您了。很酷。但是直到现在她还没有提供答案检查她的答案。这对你有用。
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
        }
    });