微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

如果我想通过单击按钮将图像更改为另一个图像,然后通过在 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() 的其他函数,但它也没有工作...... 所以我的主要目标是,是否有一个函数可以让我直接使用 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,对于每个状态/级别,它会根据您的状态/级别更改图像

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。