2017-08-28 28 views
0

我想创建一个应用程序,在点击一个按钮后,用户会看到一些信息,但不是全部在一刻,但在一段时间后分片。例如,用户点击按钮并显示“GO STRAIGHT”,然后5秒后显示“TURN LEFT”,然后在3秒后显示“TURN RIGHT”,然后在2秒后显示“GO STRAIGHT”等。现在我使用了CountDownTimer。我不确定这是一个好主意,但至少我得到了我的第一部分信息,5秒后我得到了第二部分。问题是我不知道如何制作更多的信息,以及如何让信息出现在不同的时间段,如5秒,3秒,2秒​​等。我应该创建更多的CountDownTimers来实现这一点,或者有一个更好的方法?我简单的代码至今:Android - 在一段时间后采取行动

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:

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

回答