android - 倒计时然后一个动作

时间:2014-01-01 19:22:42

标签: android eclipse countdown countdowntimer

我想制作一款应用,当您按下按钮时,已开始倒计时。 当倒计时到达终点时,它看起来你点击按钮有多变,如果它超过10它什么都不做,但如果它在10以下它必须激活一个动作,就像显示一个选择。

我也想制作一个重置按钮。 当您点击重置按钮时,倒计时设置为10秒,当您再次点击倒计时按钮时,它会重新开始。

StartButton --->

|click = counter running|
|click after the first one = counting the clicks|
|if the clicks is above the 10 = it will happen nothing (break;)|
|if the clicks is under the 10 = it will show a pickture|

ResetButton --->

|resets the countdown|

我希望我把它好。 我想使用“开关和案例”系统。

这是我的意思:

int counter = 0;

ImageButton finishhimbutton;
ImageButton resetbutton;
ImageView jb1;
ImageView jb2;
ImageView jb3;
ImageView jb4;
ImageView jb5;
ImageView jb6;
    TextView txtCount;





@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        mTextView = (TextView)findViewById(R.id.mcounter);
        txtCount = (TextView)findViewById(R.id.timer);              
        txtCount.setText(String.valueOf(counter));
        jb1 = (ImageView) findViewById(R.id.JB1);
        jb2 = (ImageView) findViewById(R.id.JB2);
        jb3 = (ImageView) findViewById(R.id.JB3);
        jb4 = (ImageView) findViewById(R.id.JB4);
        jb5 = (ImageView) findViewById(R.id.JB5);
        jb6 = (ImageView) findViewById(R.id.JB6);
        finishhimbutton = (ImageButton) findViewById(R.id.finishhim);
        resetbutton = (ImageButton) findViewById(R.id.reserbutton);







        finishhimbutton.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View v) {
                counter++;
                txtCount.setText(String.valueOf(counter));
           switch(counter){


                case 10:
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.VISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 20:
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.VISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 30:
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.VISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 40:
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.VISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 49:

                    Toast.makeText(MainActivity.this, "Finish Him!",        Toast.LENGTH_SHORT).show();
                    break;
                case 50:            

                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.VISIBLE);

                     break;

                case 51:
                    jb1.setVisibility(ImageView.VISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);
                    counter = 0;
                    txtCount.setText(String.valueOf(counter));

                    break;

                 default:

                     break;



                }

                }
            }



);



resetbutton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {               
            counter = 0;
            txtCount.setText(String.valueOf(counter));
            jb1.setVisibility(ImageView.VISIBLE);
            jb2.setVisibility(ImageView.INVISIBLE);
            jb3.setVisibility(ImageView.INVISIBLE);
            jb4.setVisibility(ImageView.INVISIBLE);
            jb5.setVisibility(ImageView.INVISIBLE);
            jb6.setVisibility(ImageView.INVISIBLE);

        }

    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要一个全局变量处理程序,并在第一次单击时执行此操作:

 if (handler == null) {
    handler = new Handler();
    handler.postDelayed(
        new Runnable() {
            public void run() {
                if (!killed){
                //reset clickcount after 10 seconds and whatever should be done
                }
            }
        }, 10000L);
 }

如果你想重置只是擦除所有数据。并将被杀死的全局变量设置为true,因此runnable不会执行。

将它添加到那里,注意到你的第一个舔。

    @Override
    public void onClick(View v) {
        counter++;
        txtCount.setText(String.valueOf(counter));
        // should be fine right here
        ...
     }

答案 1 :(得分:0)

感谢您的回复

我这样做了:

public class MainActivity extends Activity implements OnClickListener{

private Handler timer = new Handler();



int counter = 0;

TextView mTextView;
ImageButton finishhimbutton;
ImageButton resetbutton;
ImageView jb1;
ImageView jb2;
ImageView jb3;
ImageView jb4;
ImageView jb5;
ImageView jb6;
   TextView txtCount;





@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        txtCount = (TextView)findViewById(R.id.timer);              
        txtCount.setText(String.valueOf(counter));
        jb1 = (ImageView) findViewById(R.id.JB1);
        jb2 = (ImageView) findViewById(R.id.JB2);
        jb3 = (ImageView) findViewById(R.id.JB3);
        jb4 = (ImageView) findViewById(R.id.JB4);
        jb5 = (ImageView) findViewById(R.id.JB5);
        jb6 = (ImageView) findViewById(R.id.JB6);
        finishhimbutton = (ImageButton) findViewById(R.id.finishhim);
        resetbutton = (ImageButton) findViewById(R.id.reserbutton);



        final Runnable hMyTimeTask = new Runnable() {
               public void run() {              
                    counter = 0;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.VISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);


               }

            }; 



        finishhimbutton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                                    if (counter == 1) {
                    timer = new Handler();
                    timer.removeCallbacks(hMyTimeTask);
                    timer.postDelayed(hMyTimeTask, 1000);

                 }

           switch(counter){

           case 1:
                counter++;
                txtCount.setText(String.valueOf(counter));
                jb1.setVisibility(ImageView.VISIBLE);
                jb2.setVisibility(ImageView.INVISIBLE);
                jb3.setVisibility(ImageView.INVISIBLE);
                jb4.setVisibility(ImageView.INVISIBLE);
                jb5.setVisibility(ImageView.INVISIBLE);
                jb6.setVisibility(ImageView.INVISIBLE);
                break;

                case 10:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.VISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 20:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.VISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 30:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.VISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 40:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.VISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);

                    break;

                case 49:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    Toast.makeText(MainActivity.this, "Finish Him!", Toast.LENGTH_SHORT).show();
                    break;
                case 50:            
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.INVISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.VISIBLE);

                     break;

                case 51:
                    counter++;
                    txtCount.setText(String.valueOf(counter));
                    jb1.setVisibility(ImageView.VISIBLE);
                    jb2.setVisibility(ImageView.INVISIBLE);
                    jb3.setVisibility(ImageView.INVISIBLE);
                    jb4.setVisibility(ImageView.INVISIBLE);
                    jb5.setVisibility(ImageView.INVISIBLE);
                    jb6.setVisibility(ImageView.INVISIBLE);
                    counter = 0;
                    txtCount.setText(String.valueOf(counter));

                    break;

                 default:
                        counter++;
                        txtCount.setText(String.valueOf(counter));
                     break;



                }

                }
            }



);



resetbutton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
            counter = 0;
            txtCount.setText(String.valueOf(counter));
            jb1.setVisibility(ImageView.VISIBLE);
            jb2.setVisibility(ImageView.INVISIBLE);
            jb3.setVisibility(ImageView.INVISIBLE);
            jb4.setVisibility(ImageView.INVISIBLE);
            jb5.setVisibility(ImageView.INVISIBLE);
            jb6.setVisibility(ImageView.INVISIBLE);

        }
    });
}   
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public void onClick(View v) {

}
}

感谢您的帮助!