-2

如果我想通过单击一个按钮将图像更改为另一个图像,然后通过单击 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() 的函数,但它也没有工作......所以我的主要目标是,是否有一个函数可以通过它直接存储图像视图的资源与可绘制文件夹中的图像以及如何在 if else 或其他一些条件语句中实现它?

4

2 回答 2

0

第一种方法应该可行,但该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);
    }
    
}
于 2021-07-16T03:14:43.097 回答
0

您可以尝试使用 StateListDrawable、LevelListDrawable,每个状态/级别都会根据您的状态/级别更改图像

于 2021-07-16T03:20:05.887 回答