1. 程式人生 > >支援雙向範圍選擇和普通模式的SeekBar

支援雙向範圍選擇和普通模式的SeekBar

國際慣例先上圖
這裡寫圖片描述

Step1

build.gradle增加

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    ...
    compile 'com.github.Jay-Goo:RangeSeekBar:v1.1.0'
}

//minSdkVersion的值改為16及以上
minSdkVersion 16

Step2

xml增加

<LinearLayout
    xmlns:android
="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.xy.rangeseekbar.MainActivity" android:orientation="vertical"
android:gravity="center" android:background="#e5e5e5" >
<TextView android:id="@+id/progress2_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/btn_dialog_box"
/>
<com.jaygoo.widget.RangeSeekBar android:id="@+id/seekbar2" android:layout_width="match_parent" android:layout_height="wrap_content" app:lineColorSelected="@color/colorPrimary" app:lineColorEdge="@color/colorPrimaryDark" app:thumbSize="20dp" app:seekBarHeight="10dp" app:cellMode="number" app:seekBarMode="range" app:progressHintMode="alwaysHide" /> </LinearLayout>

MainActivity.java中程式碼

public class MainActivity extends AppCompatActivity {
    private RangeSeekBar seekbar2;
    private TextView tv2;
    private DecimalFormat df = new DecimalFormat("0");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        seekbar2 = (RangeSeekBar)findViewById(R.id.seekbar2);
        tv2 = (TextView)findViewById(R.id.progress2_tv);
        //設定範圍
        seekbar2.setRange(0,179);
        //設定初始值
        seekbar2.setValue(50,100);

        seekbar2.setOnRangeChangedListener(new RangeSeekBar.OnRangeChangedListener() {
            @Override
            public void onRangeChanged(RangeSeekBar view, float min, float max, boolean isFromUser) {
                if (isFromUser) {
                    tv2.setText(df.format(min) + "-" + df.format(max));
                    seekbar2.setLeftProgressDescription(df.format(min));
                    seekbar2.setRightProgressDescription(df.format(max));
                }
            }
        });
    }
}

用於顯示選擇範圍的是一個TextView,考慮到它可能會被拉伸,所以背景用的是一張.9圖片,製作.9圖片教程請戳這裡

引數設定

attr format description
min float 最小值, Float.MIN_VALUE <= min < max,預設:0
max float 最大值, min < max <= Float.MAX_VALUE, 預設: 100
reserve float 兩個按鈕的最小間距
cells int cells 等於0為普通模式,大於1時切換為刻度模式
progressHintMode enum 進度提示模式 defaultMode:當拖動時顯示 alwaysHide:一直隱藏 alwaysShow:一直顯示
lineColorSelected color 拖動後的Seekbar顏色
lineColorEdge color 預設的Seekbar顏色
thumbPrimaryColor color 進度為最小值或最大值時按鈕的顏色,預設:不呼叫
thumbSecondaryColor color 進度不為最小值或最大值時按鈕的顏色,預設:不呼叫
markTextArray reference 刻度文字,不設定的時候預設隱藏按鈕的背景資源,不設定的時候預設為圓形按鈕
thumbResId reference 按鈕的背景資源,不設定的時候預設為圓形按鈕
progressHintResId reference 進度提示背景資源,必須使用 9 path檔案
textPadding dimension 刻度文字與進度條之間的距離textSize
hintBGHeight dimension 進度提示背景的高度,不設定時根據文字尺寸自適應
hintBGWith dimension 進度提示背景的寬度,不設定時根據文字尺寸自適應
hintBGPadding dimension 進度提示背景和進度條之間的距離
seekBarHeight dimension 進度條的高度
thumbSize dimension 按鈕的尺寸
cellMode enum 刻度模式 number 根據刻度的實際所佔比例分配位置*(markTextArray中必須都為數字)* other 平分當前佈局*(markTextArray可以是任何字元)*
seekBarMode enum 單向、雙向模式 single 單向模式,只有一個按鈕 range 雙向模式,有兩個按鈕

原始碼下載

相關推薦

支援雙向範圍選擇普通模式SeekBar

國際慣例先上圖 Step1 build.gradle增加 allprojects { repositories { ... maven { ur

redis使用管道普通模式下執行效率的對比

1 普通模式 $redis = new Redis;     $redis->connect("127.0.0.1","6379");     $redis->auth("123456");     for($i=0;$i<10000;$i++){   

移動web 上下拉重新整理,支援iscroll滾動內容普通內容(沒有滾動的)。。。

效果圖:   主要程式碼: UpDownRefresh.css .UpDownRefresh_loading { width: 36px; height: 36px; border-radius: 50%; border: 5px solid white;

Android安卓WebApp中 全屏普通模式下 webview中軟鍵盤彈出擋住輸入框 解決方案

最近公司開發的WEBAPP遇到了一個比較噁心的問題。就是在webview中當需要輸入內容時,軟鍵盤彈起後,擋住了輸入框,試了很多辦法都不太滿意。(這裡要吐槽下,人家IOS端,蘋果系統都給直接封裝好了,

Android可雙向滑動的範圍選擇器(雙向滑動可選擇範圍SeekBar)實現

一、概述 之前公司app裡面有個功能是一個可以雙向滑動的範圍選擇器,我在網上百度過一些實現方法,感覺各有利弊吧,但是都不太適合我們的需求。所以站在巨人的肩膀上,通過自定義View實現了一個可以適用於絕大多數情況的範圍選擇器來供大家使用。首先,看效果圖:

Eureka的自我保護模式、多網絡卡環境下的IP選擇健康檢查

Eureka的自我保護模式 禁用自我保護模式: eureka.server.enable-self-preservation = false 多網絡卡環境下的IP選擇 對於多網絡卡的伺服器,各個微服務註冊到Eureka Server上的IP要如何指定呢? 指定IP在某些場合下

C++之智慧指標普通指標單例模式兩種實現

1  問題 實現c++的單例模式,這裡測試分別寫了通過智慧指標返回物件和普通返回指標     2  程式碼測試 include <iostream> #include <mutex> #include <m

CSS 7.5 選擇器-子元素、相鄰兄弟普通兄弟選擇

CSS 7.5 選擇器-子元素、相鄰兄弟和普通兄弟選擇器 1.子元素選擇器。選擇作為某元素的子元素的元素。 格式:父元素 > 子元素 {宣告} 例如: h1 > strong { color:red;} HTML中: <h1>··········

CSS相鄰兄弟選擇普通相鄰兄弟選擇

看字面意思很難區別,直接上程式碼看效果 相鄰兄弟選擇器: <!DOCTYPE html> <html> <head> <meta charset="utf-8

使用PrefView監測.NET程式效能(四):摺疊,過濾時間範圍選擇

在上一篇文章中,我們使用了Perfview的分組功能。分組功能旨在對某些函式按照某個格式進行分組,以減少檢視中的各種無關函式的數量。但僅有分組還不夠,有時我們想將一些函式呼叫資訊按某些條件過濾掉,例如將採用小於1%的函式呼叫資訊去掉,或者將函式名中包含某個字眼的函式資訊去掉,甚至只顯示某個時間段呼叫的函式。這

Android圖片選擇器,仿微信的圖片選擇器的樣式效果。支援圖片預覽圖片切換

Android圖片選擇器,仿微信的圖片選擇器的樣式和效果。支援圖片的單選、限數量的多選和不限數量的多選。支援圖片預覽和圖片資料夾的切換。支援圖片單選並剪裁。先上效果圖:1、引入依賴在Project的build.gradle在新增以下程式碼allprojects { repositories {

如何選擇FTP的主動模式被動模式

FTP檔案傳輸分為兩種模式,主動(PORT)模式和被動(Passive)模式,使用者應該用哪種?簡單粗暴,直接上答案1)如果不是必須需要,不要使用FTP服務,主動/被動模式,命令/資料埠,初學者很容易一下子就被搞蒙。2)如果一定要使用FTP服務,在今天的網際網路環境裡面,使用

STM32的定時器有兩種捕獲模式——PWM輸入模式普通輸入模式

一個定時器最多能同時捕獲幾路PWM波? 我只需要得到PWM的高電平寬度,PWM的頻率是50HZ STM32的定時器有兩種捕獲模式 PWM輸入模式和普通輸入模式 在PWM輸入模式下,一個定時器只能同時捕獲一路PWM波 在普通輸入模式下,理論上是可以同時捕獲4路PWM波 即,在定時器中斷中改變觸發模式(上升沿、下

laydate 動態改變min max, 進行時間範圍選擇

當改變下拉框值,動態改變laydate min和max 進行資料範圍選擇 1、日期選擇框: <input id="overTime" name="overTime" type="t

Nginx伺服器下使Thinkphp URL模式支援PATHINFO模式REWRITE模式

預設nginx伺服器是不識別pathinfo模式和rewrite模式的路由的,下面我們做一些配置,讓nginx伺服器支援這些路由模式 PATHINFO 找到location ~ \.php { #\.php$ 裡面的$去掉,並在裡面加上下面兩句

Javascript高級編程學習筆記(54)—— DOM2DOM3(6)範圍選擇

star pan 簡單選擇 create 兼容 rto === java tno 範圍 為了讓開發人員更加方便地控制頁面“DOM2級遍歷和範圍”模塊定義了“範圍”接口 通過該接口開發人員可以選擇文檔中的一個區域,而不必考慮元素的界限 在常規操作不能有效地修改文檔時,使用範圍

頂級程式設計師普通程式設計師在思維模式上的5個區別!

《The Effective Engineer》的作者在寫書的過程中,為了瞭解那些頂級程式設計師

適配器外觀模式

在外 適配 player 維護成本 ide volume src 成本 current 一、 基本概述 1:現實中存在三角插頭適配成雙插頭,等其他各種形式的適配器來連接不兼容的兩個物體。同理在代碼中也存在適配器模式來兼容兩個不同的代碼接口。 2:KTV包間打開一個啟動開

[CentOS 7系列]忘記密碼的“救星”——單用戶模式救援模式

linux 操作系統 用戶 system 忘記密碼 init是Linux系統操作中不可缺少的程序之一。 是一個由內核啟動的用戶級進程。 內核啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啟動一個用戶級程序init的方式來啟動其他用戶級的進程或服務。所

windows中控制臺窗口普通窗口有什麽區別?

都是 adc 同時 寫到 一個 數據 tdi 消息隊列 循環 1. 窗口都是windows標準窗口,有窗口句柄,但是console window沒有消息循環,直接從緩沖區讀數據,顯示數據。 windows中普通窗口都有自己的窗口過程, 我可以使用SetWin