自定義漂亮的Android SeekBar樣式
系統自帶的SeekBar真是太難看了,不能容忍! 只能自己做了,先來張效果圖
第1個Seekbar 背景是顏色,thumb是圖片,上程式碼:
drawable/po_seekbar.xml:<SeekBar android:id="@+id/timeline" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusable="true" android:maxHeight="4.0dip" android:minHeight="4.0dip" android:paddingLeft="16.0dip" android:paddingRight="16.0dip" android:progressDrawable="@drawable/po_seekbar" android:thumb="@drawable/seekbar_thumb" />
drawable/seekbar_thumb.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"> <shape> <solid android:color="#ff51495e" /> </shape> </item> <item android:id="@*android:id/secondaryProgress"> <clip> <shape> <solid android:color="#ff51495e" /> </shape> </clip> </item> <item android:id="@*android:id/progress"> <clip> <shape> <solid android:color="#ff996dfe" /> </shape> </clip> </item> </layer-list>
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/seekbar_thumb_normal" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/seekbar_thumb_pressed" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/seekbar_thumb_pressed" /> <item android:drawable="@drawable/seekbar_thumb_normal" /> </selector>
seekbar_thumb_pressed.png:
seekbar_thumb_normal.png:
第2個和第3個seekbar都是圖片實現的
<SeekBar
android:id="@+id/sb_detail_play_progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:paddingLeft="15.0dip"
android:paddingRight="15.0dip"
android:progressDrawable="@drawable/progress_holo_light"
android:thumb="@drawable/detail_icon_schedule_ball" />
drawable/progress_holo_light.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/volumn_bg" />
<item android:id="@*android:id/secondaryProgress">
<scale android:drawable="@drawable/volumn_front" android:scaleWidth="100%" />
</item>
<item android:id="@*android:id/progress">
<scale android:drawable="@drawable/volumn_primary" android:scaleWidth="100%" />
</item>
</layer-list>
volumn_bg.9.pngvolumn_front.9.png
volumn_primary.png
第3個seekbar
這有個圖片
如何製作Seekbar圖片
之前在做Seekbar的時候,反覆讓美工做了很多圖都不合適要麼不好看,後來也不好意思讓美工繼續做了,於是自己動手做
後面兩個用圖片實現的Seekbar是從優酷客戶端扣出來的,開啟volumn_bg.9.png、volumn_front.9.png、volumn_primary.9.png ,放大到可以看很清楚,發現圖片四周都是黑點,這就是傳說中的 .9圖片(不瞭解的可以先弄明白再繼續),再看看大小3*25 90位元組。
開始動手!
第一步當然要先開啟PhotoShop啦
然後新建,如圖:
這裡的大小1*23 與 volumn_bg.9.png的大小3*25 明顯不符,不過這正是使用到.9圖片的目的
新建完成後,按Ctrl 加+鍵持續放大
在紅色箭頭所指方向選擇矩形選框工具,然後畫出一個畫素的點
按方向鍵 ↑↓ 調整位置到居中
然後在選框中右鍵-填充-內容-使用-顏色,可以隨意找喜歡的顏色,volumn_primary.9.png放大後看到居中的點是藍色的,那我就來個紅色的
檔案-儲存為Web所用格式 儲存名為volumn_primary.png,儲存後大小為932位元組,使用.9處理過後,它就會縮小10倍了
開啟draw9patch.bat 使用draw9patch,直接將剛才儲存的圖片拖入程式中
在SDK路徑下tools資料夾下面可以找到draw9patch,在這裡提示下,某些SDK下的draw9patch不能使用,比如我的SDK:adt-bundle-windows-x86_64-20140321,SDK比較新,後來我就找了個比較老的,就可以用了下載連線:http://download.csdn.net/detail/w8320273/7813455
照著volumn_primary.9.png給它畫黑點
在Draw9 patch中 Ctrl+S 儲存,還是老名字volumn_primary.png,下圖可以看到已經自動命名成volumn_primary.9.png,大小也變成了3*25 91位元組,就是不知道在程式中效果顯示會怎麼樣,那就把它複製到專案中替換掉原來的,看看情況如何
接下來再繼續做thumb也就是滑塊
首先看detail_icon_schedule_ball.png 大小40*40 2.48KB,圖片還帶有陰影效果
開啟PhotoShop新建40*40,在矩形選框工具右鍵選擇圓形選框工具,按住Shift鍵同時按滑鼠左鍵畫出規則圓形,畫的時候最好放大介面
然後填充想要的顏色,在PhotoShop最右邊可以找到不透明度,改為50%
Shift+Ctrl+N新建圖層然後在中間再畫一個圓,填充,再儲存然後就OK了
我畫好的樣子:
效果:
沒有陰影效果也還可以吧,需要效果的可以網上找PhotoShop實現陰影的效果,畢竟我也不是專業的