如何在 android studio 的 imageview 中交换图像?

How to interchange images in imageview in android studio?

如果我想通过单击一个按钮将一张图像更改为另一张图像,然后通过在 android studio 中的 imageview 上单击同一按钮再次返回上一张图像,简而言之如何操作和最简单的方法?由于是新手,对imageview的所有功能不是很熟悉

例如:- 在寻找更简单的方法失败了很多次之后,我编写了这段代码来完成我需要的事情。

int i=0;
public void change(View v){

    int img[] = {R.drawable.cat1,R.drawable.cat2};
    ImageView cat = findViewById(R.id.imageView2);
    if(i==0)
    {cat.setImageResource(img[1]);
    i=1;}
    else {cat.setImageResource(img[0]);
    i=0;}
 }

在我尝试做这样的事情之前:-

public void change(View v){

    ImageView cat = findViewById(R.id.imageView2);
    if(cat.getDrawable()==R.drawable.cat2;)
    {cat.setImageResource(R.drawable.cat1);}
 else
    {cat.setImageResource(R.drawable.cat1};
}

但它一直报错说它们有不同的类型,我也尝试了一些其他名为 getId() 的函数,但它也没有用... 所以我的主要 objective 是,有没有一个函数可以通过它直接将图像视图的资源与 drawable 文件夹中的图像进行比较,以及如何在 if else 或其他条件语句中实现它?

第一种方法应该可行,但 i 值似乎与 ImageView 没有紧密耦合。因此,您可以将标签设置为 ImageView 等于当前可绘制对象 ID:

初始标签:

ImageView cat = findViewById(R.id.imageView2);
cat.setImageResource(R.drawable.cat1);
cat.setTag(R.drawable.cat1);

点击监听回调:

public void change(View v){

    ImageView cat = findViewById(R.id.imageView2);
    int tag = (int) cat.getTag();
    
    if(tag == R.drawable.cat2){
        cat.setImageResource(R.drawable.cat1);
        cat.setTag(R.drawable.cat1);
        
    } else {
        cat.setImageResource(R.drawable.cat2);
        cat.setTag(R.drawable.cat2);
    }
    
}

您可以尝试使用 StateListDrawable、LevelListDrawable,每个 state/level,它会根据您的 state/level

改变图像