Android 安卓-一段时间后采取行动

Android 安卓-一段时间后采取行动,android,time,delay,countdowntimer,Android,Time,Delay,Countdowntimer,我想创建一个应用程序,在点击一个按钮后,用户将看到一些信息,但不是在一瞬间看到全部信息,而是在一段时间后看到部分信息。例如,用户点击按钮,它显示“直行”,然后在5秒后显示“左转”,然后在接下来的3秒后显示“右转”,然后在接下来的2秒后显示“直行”,等等。现在我使用了倒计时。我不确定这是个好主意,但至少我得到了第一部分信息,5秒钟后我得到了第二部分。问题是,我不知道如何使更多的时间,以及如何使信息在不同的时间段出现,如5秒、3秒、2秒等。我应该创建更多的倒计时来实现这一点,还是有更好的方法?到目前

我想创建一个应用程序,在点击一个按钮后,用户将看到一些信息,但不是在一瞬间看到全部信息,而是在一段时间后看到部分信息。例如,用户点击按钮,它显示“直行”,然后在5秒后显示“左转”,然后在接下来的3秒后显示“右转”,然后在接下来的2秒后显示“直行”,等等。现在我使用了倒计时。我不确定这是个好主意,但至少我得到了第一部分信息,5秒钟后我得到了第二部分。问题是,我不知道如何使更多的时间,以及如何使信息在不同的时间段出现,如5秒、3秒、2秒等。我应该创建更多的倒计时来实现这一点,还是有更好的方法?到目前为止,我的简单代码是:

 public class MainActivity extends Activity {


TextView text1;

private static final String FORMAT = "%02d:%02d:%02d";

CountDownTimer CountDownTimer1;


int seconds , minutes;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    text1=(TextView)findViewById(R.id.textView1);



}

public void onClick(View view)
{

    System.out.println("GO STRAIGHT");

     CountDownTimer1 = new CountDownTimer(5000, 1000) {

        public void onTick(long millisUntilFinished) {


            text1.setText(""+String.format(FORMAT,
                    TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
                            TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
                            TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

        }

        public void onFinish() {
            text1.setText("done!");
            System.out.println("TURN LEFT");
        }
    }.start();
}


}
XML:


您可以使用处理程序和postDelayed方法在一段时间后执行一些操作。当一个处理程序完成它的工作时,您将以另一个时间间隔启动另一个处理程序,并在它完成时执行其他操作。这里有一些例子:

谢谢,它比倒计时更适合我的应用程序
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="34dp"
    android:layout_marginTop="58dp"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Action"
    android:id="@+id/button"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="89dp"
    android:onClick="onClick" />

</RelativeLayout>
public void onClick(View view)
{

    System.out.println("GO STRAIGHT");

     CountDownTimer1 = new CountDownTimer(50000, 1000) {

        public void onTick(long millisUntilFinished) {

            long time = millisUntilFinished;

            if(time == 40000)
            {
                System.out.println("TURN LEFT");
            }
            else if(time == 20000)
            {
                System.out.println("TURN RIGHT");
            }
            else if(time== 10000)
            {
                System.out.println("GO BACK");
            }


            text1.setText(""+String.format(FORMAT,
                    TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(
                            TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(
                            TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

        }

        public void onFinish() {
            text1.setText("done!");
            //System.out.println("TURN LEFT");
        }
    }.start();
}