SeekBar控件是一个进度条的控件,我们再看视频或者听歌时,都能看到一个移动的进度条,而且还可以拖拽,就是今天我们要学习的这个控件,好了,现在开始学习。
api自带的SeekBar控件
效果图:
项目下载:
activity_main.xml中的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:text="" />
</LinearLayout>
package com.test.seekbardemo;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity {
private SeekBar seekBar1;
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindViews();
}
private void bindViews() {
seekBar1 = (SeekBar) findViewById(R.id.seekBar1);
textView1 = (TextView) findViewById(R.id.textView1);
seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
//进度移动时,进入这个方法,每一小点 的改变都要来执行一次
//在这里给进度条下面的textView赋值,用于展示当前的进度刻度
textView1.setText("当前进度值是:" + progress + " / 100 ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//鼠标点击进度条时,触发的事件
Toast.makeText(MainActivity.this, "点击SeekBar", Toast.LENGTH_SHORT)
.show();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//鼠标松开进度条时,触发的事件
Toast.makeText(MainActivity.this, "放开SeekBar", Toast.LENGTH_SHORT)
.show();
}
});
}
}
自定义SeekBar控件
效果图:
项目下载:
代码如下:
文件夹drawable下的seek_bar.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="#EE9A00" />
</shape>
</item>
<!-- 第一进度,设置为紫色 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="#6959CD" />
</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_pressed="true" android:drawable="@drawable/solid"/>
<!-- 松开鼠标后,显示空心圆图片 -->
<item android:state_pressed="false" android:drawable="@drawable/hollow"/>
</selector>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<!-- 加载自定义的背景颜色和图片背景 -->
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/seek_bar"
android:thumb="@drawable/seek_thumb"
/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:text="" />
</LinearLayout>
MainActivity.java中代码:
package com.test.seekbardemo;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity {
private SeekBar seekBar1;
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindViews();
}
private void bindViews() {
seekBar1 = (SeekBar) findViewById(R.id.seekBar1);
textView1 = (TextView) findViewById(R.id.textView1);
seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if (progress > 30 && progress < 50) {
textView1.setTextColor(Color.GREEN);
} else if (progress >= 50 && progress < 80) {
textView1.setTextColor(Color.BLUE);
} else if (progress >= 80) {
textView1.setTextColor(Color.RED);
}else {
textView1.setTextColor(Color.BLACK);
}
textView1.setText("当前进度值是:" + progress + " / 100 ");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "点击SeekBar", Toast.LENGTH_SHORT)
.show();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(MainActivity.this, "放开SeekBar", Toast.LENGTH_SHORT)
.show();
}
});
}
}