0

さまざまな塗りつぶしレベルの進行状況バーを表示すると仮定する単純なアクティビティがあります。プログレス バーを含むこのアクティビティは、学生がモバイル アプリケーションで演習テストを行った後に表示されます。そのため、学生が合格したかどうかを示す進行状況バーには、すべて青で塗りつぶされた色が表示されます。平均的なパフォーマンスであれば。色は緑で半分塗りつぶされています。パフォーマンスが低い場合、色は完全に赤く、わずかに色が塗りつぶされます。

塗りつぶしの色を設定する私の小さなコードは以下にありますが、機能しません

 if(grade.equals("passed")){
        setProgress(100);
    }
    else{
        setProgress(50);
    }
4

2 に答える 2

0

私のために働く次のサンプル:

private void animate() {
    mProgressStatus = 25;
    final ProgressBar mProgress = (ProgressBar) findViewById(R.id.progress);
    new Thread(new Runnable() {
        public void run() {
            while (mProgressStatus < 100) {
                mHandler.post(new Runnable() {
                    public void run() {
                        mProgress.setProgress(mProgressStatus);
                    }
                });
            }
        }
    }).start();
}

mProgressStatus プログレスバーを変更すると、塗りつぶしが変更されます

于 2013-10-03T10:38:22.607 に答える
0

これが私が通常行う方法です。

Handler を拡張し、リフレッシュ ステータスを簡単に制御できるカスタム メソッドを追加します。

また、リフレッシュ期間を簡単かつ動的に制御することもできます。

    public class ProgressHandler extends Handler {

    private static final int START = 0;
    private static final int STOP = 1;
    private static final int REFRESH = 2;

    public void start() {
        removeMessages( STOP );
        sendEmptyMessage( START );
    }

    public void stop() {
        removeMessages( START );
        removeMessages( STOP );
    }

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage( msg );

        switch (msg.what) {
        case REFRESH:
            mProgress.setProgress(mProgressStatus);

            if( mProgressStatus < 100 )
                sendEmptyMessageDelayed( REFRESH, 100 /* Or how much you need */ );

            break;
        case START:
            sendEmptyMessage( REFRESH );
            break;
        case STOP:
            removeMessages( REFRESH );
            break;
        default:
            break;
        }
    }
};

これは最良の方法の 1 つだと思います。Timerを使用するよりもさらに優れているため、動作をもう少しカスタマイズできます。

于 2013-10-03T10:57:55.440 に答える