1

私は現在、Androidモバイルデバイス用のアプリケーションを開発する方法を学んでいます。

デバイス画面に0〜9の数字を表示するテストアプリケーションを作成しました。数値の変更を遅らせる簡単な関数を作成しました。

ただし、アプリケーションを実行すると、最終的な番号のみが表示されます。この最終的な数字が表示されるまでにも遅延があります。一時停止の長さは、定義した遅延に表示する桁数を掛けたものであると想定しています。

数字を遅らせて変更するアプリを作成するにはどうすればよいですか?

public class AndroidProjectActivity extends Activity {
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        Main();
    }

void Delay(int Seconds){
    long Time = 0;
    Time = System.currentTimeMillis();
    while(System.currentTimeMillis() < Time+(Seconds*1000));
}

void Main() {
    String ConvertedInt;
    TextView tv = new TextView(this);
    setContentView(tv);

    for(int NewInt = 0; NewInt!= 9; NewInt++){
        ConvertedInt = Character.toString((char)(NewInt+48));
        tv.setText(ConvertedInt);
        Delay(5);
    }
}
4

3 に答える 3

1

これを行う 1 つの方法は、ビューを更新するランナブルを作成することです。これは引き続き UI スレッドで更新されますが、バックグラウンドで待機します。以下のコードには間違いがあるかもしれませんが、微調整で実行できるはずです..

UI スレッドをブロックしているため、アクティビティへのシステム コールをブロックすることは適切ではありません。アプリが強制終了され、アプリケーションが応答していませんというメッセージが表示されます。これは別の良いです。

public class AndroidProjectActivity extends Activity {
    private Handler mHandler;
    private TextView mTextView;
    private Runnable mCountUpdater = new Runnable() {
        private int mCount = 0;
        run() {
           if(mCount > 9)
               return;
           mTextView.setText(String.valueOF(mCount+48));
           mCount++;
           // Reschedule ourselves.
           mHandler.postDelayed(this, 5000);
        }
    }
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        // Cleaner to load a view from a layout..
        TextView tv = new TextView(this);
        setContentView(tv);
        mTextView = tv;
        // Create handler on UI thread.
        mHandler = new Handler();
        mHandler.post(mCountUpdater);
    }
}
于 2012-06-17T14:36:57.940 に答える
1

、を作成してthreadからwhich sleeps for certain interval of time、値を 1 ずつ増やして 9 まで増やします。そして、 を使用しますHandler to update the UI

使用することもできますAsyncTask

于 2012-06-17T03:26:47.280 に答える
0

main()の呼び出しはUIをブロックしているため、呼び出しが終了するまでnay番号を表示できません。

于 2012-06-17T06:36:16.607 に答える