【问题标题】:How to interchange images in imageview in android studio?如何在android studio的imageview中交换图像?
【发布时间】:2021-07-16 02:42:30
【问题描述】:

如果我想通过单击一个按钮将图像更改为另一个图像,然后通过单击 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 或其他一些条件语句中实现它?

【问题讨论】:

  • 你的意思是,第一个sn-p代码给你错误?它看起来不错,是实现目标的好方法。使用它时收到什么错误消息?
  • 不是第一个 sn-p 是我做的,但它看起来很大并且有很多行。
  • 我要求提供类似于我在第二部分中尝试的任何类型的功能,以便代码变得更小更简单
  • 除了使用布尔值之外,这种方法再简单不过了。但是它不能在旋转中存活。

标签: android android-studio imageview android-studio-4.2


【解决方案1】:

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

初始标签:

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

【讨论】:

  • 是的,我正在寻找这个 .getTag() 函数,它可以比较条件语句中的值,而无需手动将它们设置在数组中...谢谢:-)
  • 第一个代码有效,但我必须制作一个我想要比较的东西的数组并且你给了它的解决方案,谢谢,现在我不必这样做了。
【解决方案2】:

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

【讨论】:

  • @Zain 的上述回答解决了我的疑问,但感谢您的回答:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 2015-11-12
相关资源
最近更新 更多