如何比较android中的两个drawables

时间:2015-11-17 17:51:25

标签: android

如何在ImageButtons上获取图像的可绘制imgageID进行比较?????我想我在If {loop} thar我有一个问题klikk1与klikk2。这是兆代码。 有人可以帮忙吗?我觉得我的测试方法有问题。

int turnone;
int turntwo;
boolean turnstate = true;
ImageButton klikk1;
ImageButton klikk2;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_newgame);

    final int[] imageIDs = {
            R.drawable.dog,
            R.drawable.eagle,
            R.drawable.elefant,
            R.drawable.kanin,
            R.drawable.gurilla,
            R.drawable.lion,
            R.drawable.dog,
            R.drawable.eagle,
            R.drawable.elefant,
            R.drawable.kanin,
            R.drawable.gurilla,
            R.drawable.lion,

    };
    int[] buttonIDs = {
            R.id.btn_1,
            R.id.btn_2,
            R.id.btn_3,
            R.id.btn_4,
            R.id.btn_5,
            R.id.btn_6,
            R.id.btn_7,
            R.id.btn_8,
            R.id.btn_9,
            R.id.btn_10,
            R.id.btn_11,
            R.id.btn_12
    };

    Random r = new Random();
    ArrayList<Integer> printedImagesIDs = new ArrayList<>();

    ArrayList<ImageButton> buttons = new ArrayList<ImageButton>();

    //fyller buttons
    for(int i = 0; i < buttonIDs.length; i++){
        ImageButton temp = (ImageButton) findViewById(buttonIDs[i]);
        buttons.add(temp);
    }

    //populerer buttons med images
    for(int i = 0; i < buttons.size(); i++) {
        int random = r.nextInt(buttons.size());
        while(printedImagesIDs.contains(random))
            random = r.nextInt(buttons.size());

        buttons.get(i).setImageResource(imageIDs[random]);
        printedImagesIDs.add(random);
    }

    final ArrayList<ImageButton> final_buttons = buttons;

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
            flipImages(final_buttons);
        }
    }, 2000);

}

public void flipImages(ArrayList<ImageButton> buttons){
    for(int i = 0; i < buttons.size(); i++){
        Drawable temp = buttons.get(i).getDrawable();
        temp.setAlpha(0); //0-255, 0 = gjennomsiktig, 255 = fullt synlig
    }
}

public void test(View view){
    ImageButton btn = (ImageButton)findViewById(view.getId());
    Drawable draw = btn.getDrawable();
    draw.setAlpha(255);
    if(turnstate){
        turnone = btn.getId();
        klikk1 =btn;
        turnstate = false;
    }
    else {
        turntwo= btn.getId();
        klikk2 =btn;

        /*mRememberPwd.getDrawable().getConstantState().equals
        (getResources().getDrawable(R.drawable.login_checked).getConstantState())*/

       if(klikk1.getDrawable().getConstantState().equals(klikk2.getDrawable().getConstantState())){//found pair
           turnstate = true;
        }
        else {
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                public void run() {
                    Drawable draw1 = klikk1.getDrawable();
                    Drawable draw2 = klikk2.getDrawable();
                    draw1.setAlpha(0);
                    draw2.setAlpha(0);
                }
            }, 2000);

        }
        turnstate = true;
    }

}

}

1 个答案:

答案 0 :(得分:-1)

最直接的解决方案是在设置drawable时将 tag 设置为ImageView,然后再将标签集检查到ImageView。

这样的事情:

当您将drawable1设置为imageView1时,请执行imageView1.setTag("drawable1")

如果要检查imageView1中的drawable,只需转到imageView1.getTag()

即可
 //populerer buttons med images
    for(int i = 0; i < buttons.size(); i++) {
        int random = r.nextInt(buttons.size());
        while(printedImagesIDs.contains(random))
            random = r.nextInt(buttons.size());

        buttons.get(i).setImageResource(imageIDs[random]);
        buttons.get(i).setTag("" +imageIDs[random]); //set the tag while setting the drawable
        printedImagesIDs.add(random);
    }



    if(((String)klikk1.getTag()).equals((String)klikk2.getTag())){//get and match the tags
           turnstate = true;
        }