SeekBar扩展自ProgressBar——在ProgressBar的基础上添加了一个用户可以拖拽的thum。 SeekBar.OnSeekBarChangeListener是接收SeekBar进度改变的监听器。
SeekBar的使用方法类似于ProgressBar,今天主要通过自定义SeekBar的样式来学习SeekBar。自定义SeekBar样式有一点与ProgressBar不同——自定义部分需要两部分android:progressDrawable="@drawable/seek_bar_style" 和android:thumb="@drawable/seek_bar_thum" 。 android:progressDrawable 用于指定水平长条的样式,android:thumb用于指定thum的样式。下图为最后的样式:
1、seek_bar_style.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> <corners android:radius="10dip" /> <gradient android:centerColor="#ffBBBBBB" android:endColor="#ffCC66FF" android:startColor="#ffDDDDDD" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="10dip" /> <gradient android:centerColor="#ffffb600" android:endColor="#ffffcb00" android:startColor="#ffffd300" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="10dip" /> <gradient android:centerColor="#ff00ff00" android:endColor="#ffffffff" android:startColor="#3fF0ff30" /> </shape> </clip> </item> </layer-list>
2、seek_bar_thum.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <corners android:radius="10dip"></corners> <gradient android:startColor="#FFff0000" android:centerColor="#ff00FF00" android:endColor="#ff003dff" android:type="sweep" android:centerX="50%" android:centerY="50%"></gradient> <size android:width="20dip" android:height="20dip"/> </shape>
3、activity——WidgetSeekBarActivity,内容很简单
package com.xy.zt.selfdefinewieget; import android.app.Activity; import android.os.Bundle; public class WidgetSeekBarActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.widget_seek_bar_layout); } }
4、在ViewData.java中添加如下内容(此部分内容可选)
public static final int SEEK_BAR_ID = RATING_BAR_ID + 1; public static final String SEEK_BAR_NAME = "SeekBar"; private static final ViewData mSeekBar = new ViewData(SEEK_BAR_NAME, SEEK_BAR_ID); View_Datas.add(mSeekBar);
在WidgetsAdapter的handleItemClicked中添加如下内容
case ViewData.SEEK_BAR_ID: intent.setClass(mContext, WidgetSeekBarActivity.class); mContext.startActivity(intent); break;
以上为SeekBar控件的全部内容,下一个控件 QuickContactBadge。