android自定義seekBar
Android中自定義SeekBar的背景顏色,進(jìn)度條顏色,以及滑塊的圖片
在Android中的控件種類已經(jīng)足夠我們使用,但是有時候大家需要根據(jù)美工的設(shè)計(jì)來改變一些控件的顏色,式樣,以及背景圖片
最近正好有這方面的需要,用了很久時間,找到了改變基本顏色以及圖片的方法。
下面以SeekBar為例,為大家描述一下我的做法
首先在layout文件夾中的main.xml內(nèi)容如下
android:layout_height="fill_parent"
android:layout_height="wrap_content" android:max="100"
android:progress="50" android:progressDrawable="@drawable/seekbar_img"
android:thumb="@drawable/thumb" />
很簡單,只有一個SeekBar控件,注意它的 android:progressDrawable="@drawable/seekbar_img"
以及 android:thumb="@drawable/thumb"
它們分別對應(yīng)的是進(jìn)度條的圖片以及拖動滑塊的圖片,這里的圖片也可以是我們自定義的drawable中的xml文件,可以理解成這兩個屬性應(yīng)該如何顯示的意思,而 @drawable/seekbar_img和@drawable/thumb它們分別對應(yīng)著 drawable 文件夾中的文件seekbar_img.xml和thumb.xml,它們表示著如何去顯示進(jìn)度條與滑塊
第一步:定義Activity
在main.xml文件中加上一個SeekBar和一個TextView
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:id="@+id/seekbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/seekbar_img"
android:thumb="@drawable/thumb"
>
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
第二步:編寫Activity
package com.gufengxiachen.counter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class CounterActivity extends Activity {
//定義一個SeekBar和一個TextView
private SeekBar seekBar;
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//根據(jù)ID值取得SeekBar對象
seekBar = (SeekBar)findViewById(R.id.seekbar);
seekBar.setMax(100);
//為SeekBar設(shè)置監(jiān)聽器(這里使用匿名內(nèi)部類)
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
//復(fù)寫OnSeeBarChangeListener的三個方法
//第一個時OnStartTrackingTouch,在進(jìn)度開始改變時執(zhí)行
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
//第二個方法onProgressChanged是當(dāng)進(jìn)度發(fā)生改變時執(zhí)行
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
textView = (TextView)findViewById(R.id.edit);
int i= seekBar.getProgress();
textView.setText(""+i);
}
//第三個是onStopTrackingTouch,在停止拖動時執(zhí)行
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
textView = (TextView)findViewById(R.id.edit);
int i= seekBar.getProgress();
textView.setText(""+i);
}
});
}
}