android自定义seekBar
扫描二维码
随时随地手机看文章
Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片
在Android中的控件种类已经足够我们使用,但是有时候大家需要根据美工的设计来改变一些控件的颜色,式样,以及背景图片
最近正好有这方面的需要,用了很久时间,找到了改变基本颜色以及图片的方法。
下面以SeekBar为例,为大家描述一下我的做法
首先在layout文件夹中的main.xml内容如下
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"
它们分别对应的是进度条的图片以及拖动滑块的图片,这里的图片也可以是我们自定义的drawable中的xml文件,可以理解成这两个属性应该如何显示的意思,而 @drawable/seekbar_img和@drawable/thumb它们分别对应着 drawable 文件夹中的文件seekbar_img.xml和thumb.xml,它们表示着如何去显示进度条与滑块
第一步:定义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);
//根据ID值取得SeekBar对象
seekBar = (SeekBar)findViewById(R.id.seekbar);
seekBar.setMax(100);
//为SeekBar设置监听器(这里使用匿名内部类)
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
//复写OnSeeBarChangeListener的三个方法
//第一个时OnStartTrackingTouch,在进度开始改变时执行
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
//第二个方法onProgressChanged是当进度发生改变时执行
@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,在停止拖动时执行
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
textView = (TextView)findViewById(R.id.edit);
int i= seekBar.getProgress();
textView.setText(""+i);
}
});
}
}