如何在 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
改变图像
如果我想通过单击一个按钮将一张图像更改为另一张图像,然后通过在 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
改变图像