0

我的活动中有 12 个按钮。我想通过以下方式使用它们:

应该允许一次单击两个按钮,当单击这两个按钮时,将执行一些操作..如果此操作成功,这两个按钮必须是“不可见的”,如果此操作不成功,则必须再次选择单击所有十二个按钮中的两个按钮中的任何一个..

我已经设置了这个活动的布局以及所有十二个按钮。我还为所有按钮设置了 onClick 方法。

[添加]

我的意思是只允许同时按下十二个按钮中的两个..其中任何两个..然后比较两个按钮的输出..如果它们相等,则按钮不可见,否则它们仍然存在并且用户再次有机会单击两个按钮..

[代码]

button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    RotateAnimation rotate = new RotateAnimation(0,90);
rotate.setFillAfter(true);
button1.startAnimation(rotate);

Random r = new Random();
int next = r.nextInt(5) + 1;
imgV1.setImageResource(images[next]);  //imageView1 is given a random image

AlphaAnimation alpha = new AlphaAnimation(0,1);
alpha.setFillAfter(true);
imgV1.startAnimation(alpha);
arg0.clearAnimation();
}});

imgV1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
AlphaAnimation alpha = new AlphaAnimation(1,0);
alpha.setFillAfter(true);
imgV1.startAnimation(alpha);

RotateAnimation rotate = new RotateAnimation(90,0);
rotate.setFillAfter(true);
button1.startAnimation(rotate);
arg0.clearAnimation();
}});

按钮单击会给出随机图像..图像单击会返回按钮..现在我希望当两个按钮被单击并且如果它们具有相同的图像时,它们都会变得不可见..否则它们都会返回到按钮和用户可以再次单击两个按钮中的任何一个..

在布局中,每个按钮后面都有一个 imageView..

4

3 回答 3

0

我想的逻辑是这样的,

您应该有两个全局变量。

1 用于计算按钮点击次数,2nd 用于存储首次点击操作(基于您的应用程序)。

我将int action=0,count=0;其作为全局变量。

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if(count<2){// means first click
                action=1;// button1 pressed
                count++;
            }
            else{//second click
                count=0;
                //Here perform your action and based upon it, set visibility. Previous click is available in 'action'

            }
        }
    });

对所有按钮单击重复此操作。而已。我更喜欢调用您自己的方法来执行操作和设置可见性。

于 2013-06-16T17:34:17.297 回答
0

您可以使用setVisibility()view(Button) 的方法来设置它的可见性打开或关闭。

Button b = ( Button )findViewById( R.id.button1 );
b.setVisibility( b.INVISIBLE );
b.setVisibility( b.VISIBLE );
于 2013-06-16T12:59:40.597 回答
0

K..现在我明白了。因此,您的 Drawable 中将有 6 张图像。开始了..

制作一个大小为 12 的整数数组来存储 6 个图像的 id。比如说,int[] images={R.drawable.img1,...}; 还要Button firstClick;Drawable back;知道第一个点击的按钮。现在,我们的 onClick 将是,

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        if(count<2){// means first click
firstClick=(Button)v;
back=v.getBackground();
                action=images[0];// button1 pressed so index 0
v.setBackgroundResource(action);
v.setEnabled(false);
                count++;
            }
            else{//second click
                count=0;
                if(action==images[0]){
v.setBackgroundResource(action);
v.setEnabled(false);

}else{
v.setBackgroundDrawable(back); //roll back to old background

firstClick.setBackgroundDrawable(back);

}

        }
    }
});
于 2013-06-17T06:21:21.153 回答