android拖動條
⑴ android ratingbar怎麼設置半個星
RatingBar是基於SeekBar(拖動條)和ProgressBar(狀態條)的擴展,用星形來顯示等級評定,在使用默認RatingBar時,用戶可以通過觸摸/拖動/按鍵(比如遙控器)來設置評分,RatingBar自帶有兩種模式,一個小風格ratingBarStyleSmall,大風格為ratingBarStyleIndicator,大的只適合做指示,不適用與用戶交互。
黃色星形為自定義RatingBar
小綠色為自帶的ratingBarStyleSmall
大綠色為自帶的ratingBarStyleIndicator
通過設置style="XXXXXXXXXXXXX"進行設置切換(比如:style="?android:attr/ratingBarStyleIndicator")
自定義RatingBar需要注意的地方
一般情況下,系統自帶的RatingBar是遠遠無法滿足開發需求的,我們根據圖片自定一個RatingBar,在開始實現自定義RatingBar之前,順帶說一下res目錄下圖片放置目錄的區別:
在android sdk 1.5版本之前res目錄下面只有一個drawable一個目錄,在android sdk 1.6版本以後就出現了三個目錄,分別是drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi,
(1)drawable-hdpi裡面存放高解析度的圖片,如WVGA(480x800),FWVGA(480x854)
(2)drawable-mdpi裡面存放中等解析度的圖片,如HVGA(320x480)
(3)drawable-ldpi裡面存放低解析度的圖片,如QVGA(240x320)
(4)drawable-xhdpi裡面存放超大解析度的圖片,至少960dp x 720dp
由於我們自定義實現的RatingBar裡面使用到的星形圖片解析度比較低,所以一般情況下,我們把圖片放到drawable-mdpi或者drawable-ldpi裡面。
自定義RatingBar的實現過程
首先,根據圖片自定一個RatingBar的背景條,和圖片放到同一個目錄下面(比如drawable-mdpi),room_rating_bar.xml
?
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background"
android:drawable="@drawable/star1"></item> <span></span>
<item android:id="@+android:id/secondaryProgress"
android:drawable="@drawable/star1"></item>
<item android:id="@+android:id/progress"
android:drawable="@drawable/star2"></item>
</layer-list>
backgroud:是用來填充背景圖片的,和進度條非常類似,當我們設置最高評分時(android:numStars),系統就會根據我們的設置,來畫出以星星為單位的背景(假如android:numStars="5",就會畫出5顆灰色的星星)
progress:是用來在背景圖片基礎上進行填充的指示屬性(和進度條類似,第一進度位置)
secondaryProgress:同progress一樣屬於第二進度位置(如果不定義這個,進度條拖動,每次就畫出一整顆星星(亮),第二進度(暗)沒有覆蓋掉第一進度之後的位置,從左往右是拖不出來N.5顆星星的,這樣評分效果就不完整)
其次,通過開始介紹,我們知道RatingBar的樣式是通過style來切換的,在android中,我們可以通過在styles.xml文件中通過設置style屬性,來繼承我們需要自定控制項類型,如下styles.xml
?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/room_rating_bar</item>
<item name="android:minHeight">16dp</item>
<item name="android:maxHeight">16dp</item>
</style>
</resources>
通過parent屬性來選擇繼承的父類,我們這里繼承RatingBar類。
重新定義progressDrawable屬性(RatingBar的背景條,和我們在首先裡面介紹的那樣)
maxHeight和minHeight可以根據我們圖片像素或者其他參考值來設定。
最後,在我們需要用到RatingBar的xml配置文件裡面添加RatingBar控制項。
main.xml
?
<RatingBar
android:id="@+id/room_ratingbar"
style="@style/roomRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="4"
android:layout_marginLeft="10dp" >
</RatingBar>
⑵ Android自定義View實現可拖拽的進度條
在onSizeChanged方法中進行計算,這時可以得到一條與控制項寬度相同的直線,並把路徑設置給PathMeasure
使用PathMeasure得出當前進度的路徑並進行繪制,這里我將上一步的繪制放在了一起
這個矩形的寬度需要我們用繪制最長的文字來確定其寬高
另外矩形的顯示位置也是以當前進度所在的點為中心點
文字顯示的位置計算起來就比較簡單了,直接用上一步算出的矩形的中心點即可,不過這里需要調整文字繪制的垂直的偏移,這樣才能實現文字垂直居中
實現拖拽需要對onTouchEvent方法進行處理,也就是當手指觸摸矩形區域的時候,根據手指橫向滑動的偏移來設置當前的進度,具體如下
為了適配高度的wrap_content屬性,我們需要計算出控制項最小需要顯示的高度
這里我們是用顯示進度的矩形的高度作為控制項最小的高度的,因為矩形的高度是所有圖形最高的一個
https://gitee.com/itfitness/seek-progress-bar
⑶ Android自定義RatingBar(星級評分控制項)
RatingBar是基於SeekBar(拖動條)和ProgressBar(狀態條)的擴展,用星形來顯示等級評定!
RatingBar實現的效果圖:
看著自定義的樣式遠遠比Android自帶的樣式好看多了,用戶體驗度遠遠提升,下面我們就來實現該控制項:
定義根據圖片自定一個RatingBar的背景條,和圖片放到同一個目錄下面
five_rating_bar.xml
backgroud:是用來填充背景圖片的,和進度條非常類似,當我們設置最高評分時(android:numStars),系統就會根據我們的設置,來畫出以星星為單位的背景(假如android:numStars="5",就會畫出5顆灰色的星星)
progress:是用來在背景圖片基礎上進行填充的指示屬性(和進度條類似,第一進度位置)
secondaryProgress:同progress一樣屬於第二進度位置(如果不定義這個,進度條拖動,每次就畫出一整顆星星(亮),第二進度(暗)沒有覆蓋掉第一進度之後的位置,從左往右是拖不出來N.5顆星星的,這樣評分效果就不完整)
style.xml
提取樣式屬於個人習慣,這里可以不提取出來,可以寫在布局文件中,這里RatingBar的樣式是通過style來切換的。
通過 parent屬性來選擇繼承的父類,我們這里繼承RatingBar類。
重新定義 progressDrawable屬性(RatingBar的背景條)
maxHeight和minHeight可以根據我們圖片像素或者其他參考值來設定。
在我們需要用到RatingBar的xml配置文件裡面添加RatingBar控制項。
main.xml
android:isIndicator RatingBar是否是一個指示器(用戶無法進行更改)
android:numStars 顯示的星型數量,必須是一個整形值,像「100」。
android:rating 默認的評分,必須是浮點類型,像「1.2」。
android:stepSize 評分的步長,必須是浮點類型,像「1.2」。
就這么簡單,我們自定義屬於自己的RatingBar,星級評分控制項!
⑷ android開發中如何設置seekbar的最小值
SeekBar是ProgressBar的擴展,在其基礎上增加了一個可拖動的thumb(註:就是那個可拖動的圖標)。用戶可以觸摸thumb並向左或向右拖動,再或者可以使用方向鍵都可以設置當前的進度等級。不建議把可以獲取焦點的widget放在SeekBar的左邊或右邊。
SeekBar的setProgress是對Seekbar進行進度設置的方法,
通過使用seekbar.setProgress(0),可以設置成 seekbar的最小值
⑸ android中怎樣隱藏滾動條
android中隱藏滾動條的方法:
1. 在<ListView>標簽中設置屬性,android:fastScrollEnabled="false"
2. 以下屬性scrollbars可以設置為none也可以不設置為none。效果會有點不同。根據具體情況決定是否設置為none,android:scrollbars="none"
3. 屬性fastScrollEnabled說明:
Enables the fast scroll thumb that can be dragged to quickly
scroll through the list. [boolean]
譯:允許fast scroll thumb可以拖動來快速滾動列表。
4. 屬性scrollbars說明:
Defines which scrollbars should be displayed on scrolling or not.
譯:定義在scrolling時哪個滾動條應該顯示出來,或者不顯示。