Android開發-數字選擇進度條-步驟方法

一、實現效果

    通過滑動SeekBar選擇一定範圍的數字,同時進度條旁的EditText相應改變,也可通過在EditText中輸入數字改變進度條顯示。

數字選擇進度條


二、XML佈局

<android.support.v7.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <android.support.v7.widget.AppCompatSeekBar
                android:id="@+id/sb_pressure"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_weight="1" />
            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/et_pressure"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:inputType="number"
                android:maxLength="3"
                android:layout_weight="5" />
        </android.support.v7.widget.LinearLayoutCompat>


三、變量聲明與定義

    1、變量聲明

    private AppCompatSeekBar sb_pressure;
    private AppCompatEditText et_pressure;

    private int pressure = 160, _pressure = 160;<span style="white-space:pre">	</span>// 數值
    2、變量定義

sb_pressure = (AppCompatSeekBar) findViewById(R.id.sb_pressure);
et_pressure = (AppCompatEditText) findViewById(R.id.et_pressure);

四、設置監聽事件

    1、初始化

sb_pressure.setProgress(0);<span style="white-space:pre">	</span>// 先將進度條滑到最左端
et_pressure.setText("80");

sb_pressure.setMax(170);<span style="white-space:pre">	</span>// 設置進度條可調節的數值範圍長度,參數爲int類型
et_pressure.setText("160");<span style="white-space:pre">	</span>// 設置初始顯示值

    2、SeekBar 監聽

<span style="white-space:pre">	</span>sb_pressure.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                int p;
                et_pressure.setText("" + (80+progress));<span style="white-space:pre">	</span>// 80爲進度條滑到最小值時代表的數值
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

    3、EditText 監聽

<span style="white-space:pre">	</span>et_pressure.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                int p = 0;
                try {
                    p = Integer.parseInt(s.toString());
                } catch (Exception e) {
                    p = 0;
                }

                if(p<80 || p>250) {
                    tv_pressure.setText("充氣壓力範圍:80~250");
                    sb_pressure.setProgress(0);
                } else {
                    tv_pressure.setText("");
                    sb_pressure.setProgress(p-80);
                    _pressure = p;<span style="white-space:pre">	</span>// 記錄新修改的pressure值
                }
            }
        });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章