支援雙向範圍選擇和普通模式的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)—— DOM2和DOM3(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