我想做的是,循环显示两个屏幕。 在第一个屏幕中,用户将在2500毫秒内看到两幅图像。 在第二个屏幕中,用户将看到一个矩形,显示时间为1500毫秒,或者直到得到用户的反应为止。 1500毫秒后或出现反应后,将再次出现第一个屏幕。

这是我的代码:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

public class Training2 extends View {
    private Bitmap image1, image2;
    int state = 0,  clickCounterLeft = 0, clickCounterRight = 0;
    long startTime;
public Training2(Context context) {
    super(context);

}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Paint paint = new Paint();
    paint.setColor(Color.WHITE);
    paint.setStyle(Paint.Style.FILL);
    canvas.drawPaint(paint);

    Constants.gapWidth = (Constants.SCREEN_WITTH - 2 * Constants.imageWidth) / 4;
    Constants.gapHeight = (Constants.SCREEN_HEIGHT - Constants.imageHeigth) / 2;

    paint.setColor(Color.BLACK);
    paint.setTextSize(50);

    image1 = BitmapFactory.decodeResource(getResources(), R.drawable.r12);
    image1 = Bitmap.createScaledBitmap(image1, Constants.imageWidth, Constants.imageHeigth, true);

    image2 = BitmapFactory.decodeResource(getResources(), R.drawable.r13);
    image2 = Bitmap.createScaledBitmap(image2, Constants.imageWidth, Constants.imageHeigth, true);

    canvas.drawText(Integer.toString((int)(System.currentTimeMillis()-startTime)),50,50,paint);

    if (state == 0) {   // First Screen
        canvas.drawBitmap(image1, 3*Constants.gapWidth+Constants.imageWidth,(3*Constants.gapHeight)/4,null);
        canvas.drawBitmap(image2, Constants.gapWidth, (3*Constants.gapHeight)/4,null);


        state = 1;

    } else if (state == 1) {  // Wait until 2500 ms
        startTime = System.currentTimeMillis();

        while (System.currentTimeMillis()-startTime < 2500) {

        }

        state = 2;

    } else if (state == 2) { // Second Screen
        paint.setColor(Color.BLACK);
        canvas.drawRect(Constants.SCREEN_WITTH/4-100,Constants.SCREEN_HEIGHT/2 - 100,Constants.SCREEN_WITTH/4+100,Constants.SCREEN_HEIGHT/2 + 100,paint);

        state = 3;
    } else if (state == 3) { // Wait until 1500 ms or getting a reaction

       // I need to show image 1500 ms but before 1500 ms end if user touchs to the screen, state will be 0 again.


        state = 0;
    }





}
public boolean onTouchEvent(MotionEvent event) {

    int action = event.getAction();
    int x = (int) event.getX();

    switch (action) {
        case MotionEvent.ACTION_DOWN:
            if (x < Constants.SCREEN_WITTH / 2 && state == 1) {
                clickCounterLeft ++;

            } else if (x > Constants.SCREEN_WITTH / 2 && state == 1) {
                clickCounterRight ++;

            }
            break;
    }


    return true;
}
}

如果我等待1500毫秒时使用,则无法获得反应。 我还尝试了CountDownTimer,但是在屏幕首次出现后,图像显示的时间非常短,比1500 ms和2500 ms早。

我不知道该怎么办。

  ask by Baho translate from so

本文未有回复,本站智能推荐:

1回复

如何在特定时间后在Android中显示通知

我正在开发一个基于某些通知的应用程序,通过该应用程序用户可以执行我想显示通知的操作,并在通知之后我想添加添加时间+ 5分钟以显示下一个通知。 并在应用关闭时在后台运行计时器进程。
1回复

如何使Android通知在特定时间过期?

公共类 LayoutActivity 扩展 AppCompatActivity { Button notifybtn; } 让通知在 15 分钟内消失? 小图标是否支持任何类型的图像?
1回复

如何在后台的android中的特定时间每天一次在sqlite中插入数据?

我的任务是在后台每天 10:00 根据某些条件在 sqlite 中插入或更新一些特定数据。 我被困住了。 请帮忙。
1回复

当我测试我的应用程序时,我在Android-Studio-Consol中收到以下错误:

E/AndroidRuntime:致命异常:主进程:com.example.firstproject,PID:6019 java.lang.RuntimeException:无法启动活动组件信息{com.example.firstproject/com.example.firstproject.M
1回复

如何在Android中设置特定时间的重复通知声音?

我想使用NotificationComapat.Builder创建一个自定义通知。 我希望此通知具有重复的声音(声音来自项目的原始文件夹),持续时间应为60秒。 我设法获得了声音,但我不知道如何在该时间内将其设置为重复。 请帮忙! PS:有没有计时器任务的方法吗?
1回复

如何在设备处于睡眠模式的某个特定时间在Android中推送本地通知

实际上我正在尝试制作我的大学常规应用程序...它使用NotificationManager向用户通知当前时间段(我有九个句点,有些是在不同的时间间隔)...它一切正常,但问题发生在设备上进入睡眠状态,它不会在睡眠模式下推送任何通知...我正在使用服务推送通知但我猜服务也会在睡眠模式下进入睡眠状态
1回复

获取特定时区的时间并检查当前时间是否介于android中的两个不同时间之间[重复]

这个问题在这里已经有了答案: 检查时间是否在最小和最大范围内3 个回答 10 个月前关闭。 获取特定时区的时间并检查当前时间是否在上午 12:00 到 5:
1回复

如何在特定时间内锁定Android设备?

我正在使用设备管理员策略来锁定(lockNow),但是如何在特定的时间内重复锁定。在上述时间间隔内,用户无法解锁手机!