如何在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;
}
}
}
答案 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;
}