1

私は Eclipse で Android 開発者ツールを使用し、Java でプログラミングしています。ボタンが押されている限り、オブジェクトを画面上で移動させる必要があります。私は何時間も調査を行ってきましたが、これを達成する方法が見つかりません。スレッドを実行しようとしましたが、スレッドがクラッシュしたり、実行されないように見えたりすることがよくあります。onClickListenerボタンの状態を読み取り、それを使用してボタンがまだ押されているかどうかを判断するも試しました。現在whileループを使用していますが、これはプログラムをフリーズさせるだけです。これが最善の方法であると信じており、1 秒あたりの反復回数を制限するために Thread.sleep を使用しようとしました。これがフリーズしている理由だと思います。私は正しい軌道に乗っていますか、それとも左翼手から外れていますか? コードのスニペットを次に示します。

rightButton.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            while(arg0.isPressed())
            {
                mover.updateCoordinates(1,  0);
            }
        }

    }); 
4

3 に答える 3

2

この別の方法を試してみませんか?

最初にボタンをクラス変数として宣言し、Handler と Runnable を宣言します。

private Button rightButton; // You will assign this in onCreate() method
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
    @Override
    public void run() {
        if(rightButton.isPressed())
        {
            // If press state is pressed, move your item and recall the runnable in 100 milliseconds.
            mover.updateCoordinates(1,  0);
            mHandler.postDelayed(mRunnable, 100);
        }
    }
};

次に、ボタンの onClickListener は次のようになります。

rightButton.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View arg0) 
    {
        // Instead of performing a loop here, just call a runnable, do simple press state checking there.
        mHandler.postDelayed(mRunnable, 100);
    }

}); 
于 2013-05-12T04:55:15.000 に答える