按下时更改图像视图的源图像

Gra*_*tzi 23 android

我有一个带有大量图像按钮的滚动视图.我想在按下时更改图像按钮的图像.问题是我希望图像保持不变,直到按下另一个图像按钮.这就是我无法使用选择器的原因.实现他的最佳实践是什么?

最好的祝福

Pra*_*ara 33

你想这样做.

ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage);

// when you click this demo button
Demo_button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Demo_button.setImageResource(R.drawable.secondimage);
    }
}
Run Code Online (Sandbox Code Playgroud)

试试这个.(更新的setset设置)


M. *_*han 23

更好的解决方案,使用以下xml作为图像的来源:

   <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:state_activated="true">
            <bitmap android:src="@drawable/image_selected"/>
        </item>
        <item>
            <bitmap android:src="@drawable/image_not_selected"/>
        </item>
    </selector>

    @Override
     public void onClick(View v) {
        v.setActivated(!v.isActivated());
     }
Run Code Online (Sandbox Code Playgroud)


jak*_*b.g 14

实现它的最短途径,仅使用XML(无Java代码):

将以下内容保存为drawable/image_pressable.xml两个图像旁边:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/image_pressed" android:state_pressed="true" />
    <item android:drawable="@drawable/image_regular" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后将其引用为:

<ImageView android:src="@drawable/image_pressable" />
Run Code Online (Sandbox Code Playgroud)

小费:

使用state_pressed而不是state_activated允许在用手指按压图像时更改图像.state_activated如果你想动态改变ImageView的状态,可能会很有用,但是如果你只是希望它在按下时表现不同,则不需要任何代码.这正是本主题提出的问题.


小智 5

OnTouchListener对于你必须做的事情要好得多:

myImageButton.setOnTouchListener(new OnTouchListener(){

                public boolean onTouch(View v, MotionEvent event) {
                    switch(event.getAction())
                    {
                    case MotionEvent.ACTION_DOWN :
myImageButton.setImageResource(R.drawable.image_when_pressed);
                        break;
                    case MotionEvent.ACTION_UP :
myImageButton.setImageResource(R.drawable.image_when_released);
                        break;
                    }
                    return false;
                }

            });
Run Code Online (Sandbox Code Playgroud)


Gir*_*ran 5

不要忘记创造"有趣"的领域

尝试此操作来更改图像.按下imageview时

Like_btn.setOnClickListener(new OnClickListener()
        {

            **private boolean fun = true;**


            public void onClick(View v)
            {
                if(fun)
                {
                Like_btn.setImageResource(R.drawable.unlike);
                fun=false;
                }
                else
                {
                    fun=true;       
                    Like_btn.setImageResource(R.drawable.like);
                    Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)


dug*_*ggu 5

尝试下面的代码:-

boolean flag=false;
ImageButton btn = (ImageButton)findViewById(R.id.btn);

// when you click this demo button
btn .setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    if (!flag) {
        btn.setBackgroundResource(R.drawable.imageonpress);
        flag=true;  
    }
    else {
          btn.setBackgroundResource(R.drawable.image);
          flag=false;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)