如何比较所选ImageView对象中的图像?

时间:2018-08-21 01:16:08

标签: java android android-imageview

我正在尝试制作基本的糖果迷游戏。我有9x9的网格布局,可以在每次执行时混合imageviews.Images。现在,当我正确运行算法时,有两张图像,我将对其进行修复。如果所选的图像视图包含相同的图像,则用户每张所选图像将获得10分。问题是如何比较和选择多个图像视图?这些ImageView具有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)
    {

    }

 }

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是在代码中动态创建imageViews并将其添加到布局中,例如:

       for(int i=0;i<ar.lenght;i++) {
            ImageView imageView = new ImageView(activity);
            imageView.setImageDrawable(ar[i]);
            imageView.setOnClickListener((view)->{});
            yourLayout.addView(imageView);
        }

或者您可以使用属性为它们充气。您可以添加标签或ID来识别它们。但是,在这种情况下,您应该在班级中存储最后一个数字,并将其与当前单击的图像进行比较,然后单击两次将其无效。

也许这样会有所帮助...

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