Android -- SeekBar(II)縱向seekBar
Android – SeekBar(II)縱向seekBar
效果:
佈局:
<RelativeLayout
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="@dimen/margin_10"
android:padding="10dp">
<com.nepalese.toollibs.Activity.Component.VerticalSeekBar
android:id="@+id/vSeekBar"
android:padding="@dimen/padding_5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:progressTint="@color/colorRed"
android:thumbTint="@color/colorYellow"/>
<TextView
android:id="@+id/tvVSB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorBlack"
android:padding="@dimen/padding_5"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
使用方法:(與橫向的一樣)
private VerticalSeekBar verticalSeekBar;
private TextView tvVSB;
verticalSeekBar = findViewById(R.id.vSeekBar);
tvVSB = findViewById(R.id.tvVSB);
//設定最大值
verticalSeekBar.setMax(100);
//設定監聽
verticalSeekBar.setOnVerticalSeekBarChangeListener(new VerticalSeekBar.OnVerticalSeekBarChangeListener() {
@Override
public void onProgressChanged(VerticalSeekBar var1, int progress, boolean fromUser) {
tvVSB.setText(""+progress);
}
@Override
public void onStartTrackingTouch(VerticalSeekBar var1) {
tvVSB.setText("StartTracking");
}
@Override
public void onStopTrackingTouch(VerticalSeekBar var1) {
tvVSB.setText(" "+var1.getProgress());
}
});
原始碼:
public class VerticalSeekBar extends android.support.v7.widget.AppCompatSeekBar {
private static final String TAG = "VerticalSeekBar";
public VerticalSeekBar(Context context) {
super(context);
}
private int process;//進度
private OnVerticalSeekBarChangeListener listener;//回撥監聽
public void setOnVerticalSeekBarChangeListener(OnVerticalSeekBarChangeListener verticalSeekBarChangeListener){
listener = verticalSeekBarChangeListener;
}
public VerticalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VerticalSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
protected void onDraw(Canvas canvas) {
//將SeekBar轉轉90度
canvas.rotate(-90);
//將旋轉後的檢視移動回來
canvas.translate(-getHeight(),0);
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
onStartTrackingTouch();
case MotionEvent.ACTION_MOVE:
//獲取滑動的距離
process = getMax() - (int) (getMax() * event.getY() / getHeight());
//設定進度
setProgress(process);
Log.d(TAG , "Process: " + getProgress());
//每次拖動SeekBar都會呼叫
onSizeChanged(getWidth(), getHeight(), 0, 0);
onProgressChanged();
case MotionEvent.ACTION_UP:
onStopTrackingTouch();
break;
case MotionEvent.ACTION_CANCEL:
onStopTrackingTouch();
break;
}
return true;
}
void onProgressChanged() {
if(listener!=null){
listener.onProgressChanged(this,process,true);
}
}
void onStartTrackingTouch() {
if(listener!=null){
listener.onStartTrackingTouch(this);
}
}
void onStopTrackingTouch() {
if(listener!=null){
listener.onStopTrackingTouch(this);
}
}
public interface OnVerticalSeekBarChangeListener {
void onProgressChanged(VerticalSeekBar verticalSeekBar, int process, boolean fromUser);
void onStartTrackingTouch(VerticalSeekBar verticalSeekBar);
void onStopTrackingTouch(VerticalSeekBar verticalSeekBar);
}
}
相關文章
- Android弧形ProgressBar、SeekBarAndroid
- Android進階——自定義View之雙向選擇SeekbarAndroidView
- Android SeekBar 自定義thumb,thumb旋轉動畫效果Android動畫
- Android自定義控制元件 帶文字提示的SeekBarAndroid控制元件
- 自定義帶標尺的seekbar
- SeekBar進度和緩衝進度使用
- flutter seekbar 可拖拽可點選的進度條Flutter
- excel文字橫向變縱向快捷鍵 excel文字方向改為縱向Excel
- 縱向控制的橫向滾動
- 矩陣:橫向關係和縱向關係矩陣
- table 表格單元格橫向與縱向合併
- vue2+swiper 縱向弧形滾動效果Vue
- 程式語言對比手冊-縱向版[-類-]
- 影片操縱中的新AI技術轉向AI
- 微信小程式------輪播圖------縱向輪播圖微信小程式
- 視訊操縱中的新AI技術轉向AI
- 封裝Vue縱向表頭左右結構的table表格封裝Vue
- Unity TMPro 文字適配 Panel - Scroll View 實現縱向滑動UnityView
- 【java】Aspose.Words 合併單元格2種情況(橫向合併,縱向合併)Java
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- 資料中心基礎設施是應該縱向擴充套件還是橫向擴充套件?套件
- 數字金融向縱深發展 服務應用頻頻創新
- 影像操縱大師Xfermode講解與實戰——Android高階UIAndroidUI
- 影象操縱大師Xfermode講解與實戰——Android高階UIAndroidUI
- 熵權(值)法計算權重原理解釋&綜合得分縱向對比熵
- Range Addition II 範圍求和 II
- 唯科模塑將加快全產業鏈整合,實現縱向一體化發展產業
- 航旅縱橫
- Kubernetes下web服務的效能測試三部曲之二:縱向擴容Web
- Hackable: II
- (原創) 如何破解Quartus II 7.2 SP1? (IC Design) (Quartus II) (Nios II)iOS
- 記一次Android逆向之旅(入門向)Android
- Https雙向認證Android客戶端配置HTTPAndroid客戶端
- 如何隱藏scroll-Y縱向滾動條,並不影響內容滾動的方法
- 建立和操縱表
- 一種區域性固定表頭的實現方案(橫向可跟隨內容一同滾動,縱向鎖定表頭)
- Bracket Sequences IIRacket
- Collecting Numbers II