android - 开始一个活动onTouch
问题描述:
在我的应用程序中,我有一个倒数计数从五到一。目前,活动开始后,计数器立即开始。我想要的是停留在5秒钟,等待倒计数,直到触摸屏幕。所以倒数计时器应该开始触摸事件。android - 开始一个活动onTouch
public class MainActivity extends Activity implements OnGestureListener {
private static final String FORMAT = "%02d:%02d";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
new CountDownTimer(5000, 10) {
public void onTick(long millisUntilFinished) {
text.setText("" + String.format("%02d:%03d",
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
));
if (animationRunning) {
cancel();
}
}
public void onFinish() {
text.setText("done!");
}
}.start();
}
@Override
public boolean onTouchEvent(MotionEvent touchevent) {
}
}
答
将您的倒计时内onTouch定时器像下面
public class MainActivity extends Activity implements OnGestureListener {
private static final String FORMAT = "%02d:%02d";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
}
@Override
public boolean onTouchEvent(MotionEvent touchevent) {
new CountDownTimer(5000, 10) {
public void onTick(long millisUntilFinished) {
text.setText("" + String.format("%02d:%03d",
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
));
if (animationRunning) {
cancel();
}
}
public void onFinish() {
text.setText("done!");
}
}.start();
}
}
答
移动的代码添加到您的onTouchEvent这一部分,因为它是在活动创建,这就是为什么它的开始,当你的活动启动
new CountDownTimer(5000, 10) {
public void onTick(long millisUntilFinished) {
text.setText("" + String.format("%02d:%03d",
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
));
if (animationRunning) {
cancel();
}
}
public void onFinish() {
text.setText("done!");
}
}.start();
你应该没事
好的,这是有道理的。如果倒计时是方法的一部分,我该怎么办? –
在onTouchEvent中调用你的方法,或者为onTouchEvent创建一个新的倒数计时器:) – Redman
那么,在应用程序第一次启动之前,“暂停”活动直到屏幕被触摸为止,没有办法吗? –