java - 如何比较选定 ImageView 对象中的图像?
问题描述
我正在尝试制作一个基本的糖果迷恋游戏。我有 9x9 的网格布局,可以imageviews.Images
在每次执行时混合使用。现在,当我正确运行算法时,有两张图像,我将重新制作它们。如果选定的图像视图包含相同的图像,用户将获得每个选定图像的 10 分。问题是如何比较和选择多个图像视图?这些 ImageViews 有 onclick 按钮,但我如何比较它们?
这是我尝试过的
public class MainActivity extends AppCompatActivity {
TextView scoreText;
ImageView imageView1,imageView2,imageView3,imageView4,imageView5,
imageView6, imageView7,imageView8,imageView9;
ImageView[]imageArray;
int[]images;
//Handler handler;
//Runnable runnable;
Drawable x,y;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView1=findViewById(R.id.imageView1);
imageView2=findViewById(R.id.imageView2);
imageView3=findViewById(R.id.imageView3);
imageView4=findViewById(R.id.imageView4);
imageView5=findViewById(R.id.imageView5);
imageView6=findViewById(R.id.imageView6);
imageView7=findViewById(R.id.imageView7);
imageView8=findViewById(R.id.imageView8);
imageView9=findViewById(R.id.imageView9);
images= new int[]{R.drawable.grapes,R.drawable.lemon};
imageArray= new ImageView[]{imageView1, imageView2, imageView3, imageView4,
imageView5, imageView6, imageView7, imageView8, imageView9};
ImageSet();
}
public void ImageSet()
{
for(int j=0;j<imageArray.length;j++)
{
Random r =new Random();
int i=r.nextInt(2-0);
imageArray[j].setImageResource(images[i]);
}
}
public void image1(View view)
{
}
public void image2(View view)
{
}
public void image3(View view)
{
}
public void image4(View view)
{
}
public void image5(View view)
{
}
public void image6(View view)
{
}
public void image7(View view)
{
}
public void image8(View view)
{
}
public void image9(View view)
{
}
}
解决方案
I think the better way is creating imageViews dinamically in code and add it to layout for example:
for(int i=0;i<ar.lenght;i++) {
ImageView imageView = new ImageView(activity);
imageView.setImageDrawable(ar[i]);
imageView.setOnClickListener((view)->{});
yourLayout.addView(imageView);
}
Or you can inflate them with your properties. And you can add tag or id to identify them. But in you case you should to store in your class a last number and compares it with current clicked image and after two clicks nullify it.
Maybe something like this would help...
Integer lastClickedImageId;
for(int i=0;i<ar.lenght;i++) {
ImageView imageView = new ImageView(activity);
imageView.setImageDrawable(ar[i]);
imageView.setId(i);
imageView.setOnClickListener((view)->{
if(lastClickedImageId==null){
lastClickedImageId=imageView.getId();
} else {
if(lastClickedImageId.equals(imageView.getId())){
//TODO hide cards?
lastClickedImageId=null;
}
}
});
推荐阅读
- git - git add 是否只将未跟踪的文件或修改的文件添加到暂存区?
- windows - 无法在 Docker for Windows 上绑定挂载网络驱动器
- angular - 如何删除当前位置指示器(蓝色圆圈)并仅显示地图对该位置的控制
- java - 检查运行时 Internet 连接是否丢失
- php - 从 PHP GET 方法中的查询参数解密基本身份验证令牌
- java - Mockito 不是存根方法,而是调用方法
- docker - 运行多个实例的 WSO2 版本 5.7 问题
- php - SoapFault 异常:[VersionMismatch] 错误版本
- html - 使用 CSS 设置背景图像大小而不拉伸
- amazon-web-services - SES 电子邮件未发送