2017-08-28 5 views
0

私は、ボタンをクリックした後、ある時点でいくつかの情報が表示されますが、すべてではありません。例えば、ユーザーがボタンをクリックすると、 "GO STRAIGHT"と表示され、5秒後に "TURN LEFT"と表示され、次の3秒後に "TURN RIGHT"と表示され、次に2秒後に "GO STRAIGHT"今はCountDownTimerを使っています。私はこれが良いアイデアだとは思わないが、少なくとも私は情報の最初の部分を得て、5秒後に私は2番目の部分を得た。問題は、私がそれらの多くを作る方法と、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(); 
} 

答えて

1

することができますHandlerとpostDelayedメソッドを使用して、しばらくしてからいくつかのアクションを実行します。ハンドラが作業を終えると、別のハンドラを別の時間間隔で起動し、終了時に他のハンドラを実行します。ここにいくつかの例があります:https://www.codota.com/android/methods/android.os.Handler/postDelayed

+0

ありがとう、それは私のアプリの方がCountDownTimer – AidanSalvatore

関連する問題