SeekBar

这里实现了如下所示的进度条

  1. 进度条如线状显示,带有少许发散效果
  2. 拖拽按钮用圆显示,采用发散效果。(类似太阳的效果)

     这个效果主要有这样几个难点:进度条的高度会随着seekbar的宽度变化,然而seekbar宽度过小又会遮罩住部分拖拽按钮;拖拽按钮使用shape方式生产,而非图像。网上给的这部分介绍基本采用了一个版本,具体介绍见http://bashenmail.iteye.com/blog/603649 ,该文给出的实现方法并没有解决了这两个难点。~~~~(>_<)~~~~ ,折腾来折腾去的...

     转载请注明http://ishelf.iteye.com/admin/blogs/741470

     接下来边贴代码边介绍。这里是基于android源码给出的实例修改而成的(只给出了部分重要代码),首先给出主界面

Java代码 复制代码  收藏代码
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:orientation="vertical"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"><!--   
  5.   
  6.   <SeekBar android:id="@+id/seek1"  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="wrap_content"  
  9.         android:max="100"  
  10.         android:progress="50"  
  11.         android:secondaryProgress="75" />   
  12.   
  13.     --><SeekBar android:id="@+id/seek"    
  14.         android:layout_width="fill_parent" android:progressDrawable="@drawable/seekbar_style"  
  15.         android:thumb="@drawable/thumb1" android:layout_height="wrap_content"  
  16.         android:paddingLeft="2px" android:paddingRight="3dip"  
  17.         android:paddingBottom="4px" />   
  18.            
  19.     <TextView android:id="@+id/progress"  
  20.         android:layout_width="match_parent"  
  21.         android:layout_height="wrap_content" />   
  22.   
  23.     <TextView android:id="@+id/tracking"  
  24.         android:layout_width="match_parent"  
  25.         android:layout_height="wrap_content" />   
  26. </LinearLayout>  

    注意一下两个属性

 

Java代码 复制代码  收藏代码
  1. android:progressDrawable="@drawable/seekbar_style"//进度条   
  2. android:thumb="@drawable/thumb1"//拖拽按钮  

   它们对应的xml档案如下:

   thumb1.xml

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <!-- 按下状态-->  
  4.     <item android:state_focused="true" android:state_pressed="true">  
  5.         <shape android:shape="oval">  
  6.             <gradient android:type="radial" android:gradientRadius="8"  
  7.                 android:angle="0" android:startColor="#FFFF0000"  
  8.                 android:centerColor="#FF00FF00" android:endColor="#000000" />  
  9.             <size android:width="16dip" android:height="16dip"></size>  
  10.         </shape>  
  11.     </item>  
  12. ......//这里用的oval椭圆,注意gradient android:type=   
  13. ......//"radial" android:gradientRadius="8" 这两个属性需   
  14. ......//要一起使用。   
  15. ......   
  16. </selector>  

 seekbar_style.xml

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
  3.         ................//   
  4.         ................//   
  5.         ................//   
  6.   
  7.     <item android:id="@android:id/progress">  
  8.         <clip>  
  9.             <shape android:shape="rectangle">  
  10.                 <corners android:radius="2dip" />  
  11.                 <gradient android:startColor="#80000000" android:width="5dp"  
  12.                     android:centerColor="#7e209e" android:centerY="0.5" android:angle="90"  
  13.                     android:endColor="#80000000" />  
  14.                 <stroke android:width="8dp" android:color="#80000000"  
  15.                     android:dashWidth="3dp" android:dashGap="2dp" />  
  16.             </shape>  
  17.         </clip>  
  18.         ............//在这里设置高度实验了很多次总是行不通(谁要是通过   
  19.         ............//这种方法搞定高度,记得留言给我(~ o ~)~)   
  20.         ............//于是使用了一个遮罩层(边框),因为边框的高度也   
  21.         ............//是由seekbar决定的。这里将进度条的大部分遮   
  22.         ............//罩,只留出中间一部分。还有注意这里的边框   
  23.         ............//使用的间隔效果,所以会有发散的效果。具体效果怎样   
  24.         ............//需要自己测试一下,这里就不贴图了。   
  25.   
  26. </layer-list>  

你可能感兴趣的:(java,android,xml,测试,layout,encoding)