java - android - 在Touch上启动一个 Activity

标签 java android

在我的应用程序中,我有一个从五数到一的倒计时。目前,一旦 Activity 开始,计数器就会启动。我想要的是停留在5秒,等待倒计时,直到触摸屏幕。因此应该在触摸事件中启动倒计时器。

    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();
    }
}

关于java - android - 在Touch上启动一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41312563/

相关文章:

android - 如何让 ViewSwitcher 只包裹当前显示的 View 高度?

android - 如果您将此 ComposeView 添加到 AppCompatActivity,请确保您使用的是 AppCompat 版本 1.3+

java - 使用 jboss 工具/hibernate 配置连接到数据库时出错

java - Glide Gradle无法识别ModelLoader

Java 推回输入流

android - 从谷歌地图转换为开放街道 map (osmdroid)

java - Spring Boot Controller 返回 scala.concurrent.Future 的 Mono

java - 专有 XML 文件(Roche LC480 .ixo 文件)中的二进制字段编码/序列化格式

android - 为什么奖励视频广告类型没有显示在 Facebook Audience Network 的创建版位中?

android - 谷歌云消息传递示例主线程