SeekBar 拖动条:拖动条和滚动条类似,当是拖动条可以拖动滑块改变进度
RatingBar 星级评分条:星级评分条与拖动条相似
SeekBar特有的xml属性
android:thumb 指定一个Arawable对象,作为之定义滑块
RatingBar特有的xml属性
android:isIndicator 是否允许用户改变(true为不允许修改)
android:numStars 共有多少个星级
android:rating 默认的星级
android:stepSize 每次至少改变多少个星级
为了知道改变的进度而做相应的操作,我们需要添加监听
SeekBar 的监听 OnSeekBarChangeListener
RatingBar的监听 OnRatingBarChangeListener
下面我们通过实例来熟悉它们
(1)编写布局文件 activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/imgView1"
android:layout_width="120dp"
android:layout_height="100dp"
android:src="@drawable/ic_launcher"/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:thumb="@drawable/ic_launcher"
android:max="255"
android:progress="255"/>
<ImageView
android:id="@+id/imgView2"
android:layout_width="120dp"
android:layout_height="100dp"
android:src="@drawable/img01"/>
<RatingBar
android:id="@+id/reatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="255"
android:progress="255"
android:rating="5"
android:stepSize="0.5"
android:numStars="5"/>
</LinearLayout>
(2)编写 MainActivity.java
package com.example.bar;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity {
private ImageView imgViewSB = null; //定义ImageView
private ImageView imgViewRB = null;
private SeekBar seekBar = null; //定义SeekBar
private RatingBar ratingBar = null; //定义RatingBar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//布局组件
this.imgViewSB = (ImageView) findViewById(R.id.imgView1);
this.imgViewRB = (ImageView) findViewById(R.id.imgView2);
this.seekBar = (SeekBar) findViewById(R.id.seekBar);
this.ratingBar = (RatingBar) findViewById(R.id.reatingBar);
//seekBar设置监听,改变图片透明度
this.seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.i("onStopTrackingTouch", "停止拖动触发的方法");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.i("onStartTrackingTouch", "开始拖动触发的方法");
}
/**
* seekBar: SeekBar对象
* progress:拖动条的进度
* fromUser:是否用户手动改变
*/
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
imgViewSB.setAlpha(progress); //设置图片的透明度
Log.i("onProgressChanged", "拖动滑块位置发生改变时触发的方法");
}
});
//ratingBar设置监听,改变图片透明度
this.ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
/**
* ratingBar:RatingBar对象
* rating :星级的大小
* fromUser:是否用户手动改变
*/
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
imgViewRB.setAlpha((int)(rating*255/5));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
允许之后,效果如下: