3

アプリでカウンターとして 1 ~ 9 個の数字を表示したい


TextView te=(TextView)findViewById(R.id.text);

for(int i=0;i<10;i++ ){ try { te.setText("Number"+i); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }

しかし、これは私が望むものを与えません どうすればこれを行うことができ
ますか ありがとう

4

4 に答える 4

10

UI スレッドに遅延を設定することはありません。代わりに、HandlerおよびそのpostDelayedメソッドを使用して、一定の間隔で操作を実行します。例えば:

//define 'int i = 10;' at global level
final Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        te.setText("Number"+i);
        i--;
        handler.postDelayed(this, 1000);
    }
});
于 2013-04-30T13:19:51.150 に答える
1

次のようなコードを試すことができます。

import android.os.Bundle;
import android.view.MotionEvent;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;

public class SplashScreen extends Activity {

    protected int _splashTime = 5000;
    private Thread splashTread;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    startActivity(new Intent(SplashScreen.this,
                            Home.class));
                    finish();
                }
            }
        };
        splashTread.start();
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            synchronized(splashTread)
            {
                    splashTread.notifyAll();
            }
        }
        return true;
    }
}

必要な変更を加えて、物事が完全に機能するようにします。これはほんの一例です。

于 2013-04-30T13:35:34.020 に答える
0

カウンターを表示するときにユーザーの操作が予期されていない場合は、UI スレッドで実行されていることを確認するだけで問題ありrunOnUiThreadませHanderpostMessage

カウンターの増加中にユーザーの操作が予想される場合は、 を作成してからpostDelayedHandlerを呼び出すことができます。

于 2013-04-30T13:21:59.970 に答える