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動畫
- 自定義帶標尺的seekbar
- 自定義SeekBar顯示進度
- Android自定義控制元件 帶文字提示的SeekBarAndroid控制元件
- Android 讓你的SeekBar 也支援長按事件薦Android事件
- flutter seekbar 可拖拽可點選的進度條Flutter
- 自定義SeekBar 實時顯示百分比進度
- excel文字橫向變縱向快捷鍵 excel文字方向改為縱向Excel
- 縱向控制的橫向滾動
- (中級)縱向選單
- EXCEL橫向變縱向(不需要VBA)Excel
- oracle縱向顯示變為橫向顯示Oracle
- 矩陣:橫向關係和縱向關係矩陣
- iOS 可以縱向橫向滑動的表格實現iOS
- Google微軟競爭向縱深發展Go微軟
- 程式語言對比手冊-縱向版[-類-]
- vue2+swiper 縱向弧形滾動效果Vue
- 影片操縱中的新AI技術轉向AI
- ScientiaMobile:iPhone使用者更喜歡縱向模式iPhone模式
- 微信小程式------輪播圖------縱向輪播圖微信小程式
- Scale-up(縱向擴充套件)和Scale-out(橫向擴充套件)套件
- 視訊操縱中的新AI技術轉向AI
- 封裝Vue縱向表頭左右結構的table表格封裝Vue
- Unity TMPro 文字適配 Panel - Scroll View 實現縱向滑動UnityView
- Win10系統電腦桌面橫向變成縱向瞭如何解決【圖文】Win10
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- swiper外掛 縱向內容超出一屏解決辦法
- 資料中心基礎設施是應該縱向擴充套件還是橫向擴充套件?套件
- 數字金融向縱深發展 服務應用頻頻創新
- 谷歌釋出最新移動操縱系統 Android 4.1谷歌Android
- 【小山】sql server通過查詢系統表得到縱向的表結構SQLServer
- Android標籤、熱門搜尋實現支援橫縱排列Android
- 唯科模塑將加快全產業鏈整合,實現縱向一體化發展產業
- 熵權(值)法計算權重原理解釋&綜合得分縱向對比熵
- .NET專案開發—淺談物件導向的縱橫向關係、多型入口,單元測試(專案小結)物件多型
- 影象操縱大師Xfermode講解與實戰——Android高階UIAndroidUI