欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件

程序员文章站 2024-02-05 12:04:58
...

ProgressBar进度条组件-程序操作

进度条使用非常广泛,比如用户登录时登录的过程就需要用到进度条,还有一些需要耗时的操作,如果需要的时间过长同时并没有进度提示,用户会以为程序死掉大大降低用户的体验,所以在需要耗时操作的地方使用进度条,让用户知道程序正在进行是非常有必要的;还有从网络下载一个文件也需要进度条显示

1.常用属性:

  • android:max:进度条的最大值;
  • android:progress:进度条已完成进度值,也是当前进度值
  • android:progressDrawable:设置轨道对应的Drawable对象;
  • android:indeterminate:如果设置成true,则进度条不精确显示进度;
  • android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象;
  • android:indeterminateDuration:设置不精确显示进度的持续时间;
  • android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置;

2.进度条常用操作方法

  • getMax():返回这个进度条的范围的上限;
  • getProgress():返回进度;
  • getSecondaryProgress():返回次要进度;
  • incrementProgressBy(int diff):指定增加的进度;
  • isIndeterminate():指示进度条是否在不确定模式下;
  • setIndeterminate(boolean indeterminate):设置不确定模式下;设置未true,表示不确定,进度条仅用于提示进程还在运行,进程运行到大力并不明确,设置为false表示精确模式,此时进度条精确显示当前进度。

3. 进度条样式-通过style属性进行设置

  • @android:style/Widget.ProgressBar.Large:大跳跃、旋转画面的进度条;、
  • @android:style/Widget.ProgressBar.Small:小跳跃、旋转画面的进度条;
  • @android:style/Widget.ProgressBar.Horizontal:粗水平长条进度条;
  • ?android:attr/progressBarStyleHorizontal:细水平长条进度条;
  • ?android:attr/progressBarStyleLarge:大圆形进度条
  • ?android:attr/progressBarStyleSmall:小圆形进度条

4.实例

五种进度条

 `系统提供的圆形进度条,依次是大,中,小` 
    <ProgressBar 
        style="@android:style/Widget.ProgressBar.Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    
    <ProgressBar 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <ProgressBar 
        style="@android:style/Widget.ProgressBar.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    `系统提供的水平进度条`
    
    <ProgressBar
         style="@android:style/Widget.ProgressBar.Horizontal"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:max="100"
         android:progress="50"
        />
   
    <ProgressBar
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:indeterminate="true" 
        />

效果:::
Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件

SeekBar拖动条组件-用户操作

拖动条与进度条类似,不同之处在于拖动条是用户来进行操作,进度条则是程序在操作,拖动条通常用在数值的调整。最常见的地方就是音乐播放器或者视频播放器,音量控制或者播放进度控制。SeekBar是ProgressBar的子类,所以SeekBar具有ProgressBar的所有属性。

1.常用属性:

  • android:max:滑动条的最大值
  • android:progress:滑动条的当前值
  • android:secondaryProgress:二级滑动条的进度
  • android:thumb:滑块的显示风格

2.拖动条的setOnSeekBarChangeListener监听事件当中有三个重要的方法

  • onProgressChanged:进度发生改变时会触发
  • onStartTrackingTouch:按住SeekBar时会触发
  • onStopTrackingTouch:放开SeekBar时触发

3.实例

    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"                           `进度条最大值`
        android:thumb="@drawable/a2"                `自定义拖动按钮`
         />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40sp"
        android:hint="数值"        
        />

效果:::

Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件

4.后端代码,获取用户改变拖动条后的数值

原理:创建拖动条事件,利用文字视图获取值

public class SeekBarActivity extends Activity {
	
	private SeekBar seekbar;           `定义拖动组件`
	private TextView text;             `定义一个文本框`

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_seek_bar);
		
		seekbar = (SeekBar) findViewById(R.id.seekbar);    `获取拖动条`
		text = (TextView) findViewById(R.id.text);         `获取文本框`
		
		`设置监听事件`
		seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			
			@Override
			
			public void onStopTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub
				Toast.makeText(SeekBarActivity.this, "停止触摸进度条", Toast.LENGTH_SHORT).show();
				
			}
			
			@Override
			`触摸事件`
			public void onStartTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub
				Toast.makeText(SeekBarActivity.this,"拖动了进度条" , Toast.LENGTH_SHORT).show();
				
			}
			
			@Override
			`以百分比的形式显示当前拖动值`
			public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
				// TODO Auto-generated method stub
				text.setText("当前进度值"+progress+"/100");
			}
		});	
	}
}

效果:::
Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件

4.实例-验证码

RatingBar星级评分组件

星级评分组件一般用于对产品评价或者服务满意度评价,它同拖动条比较类似都允许用户已拖动的形式来改变数值,唯一不同的是星级评分是通过星星图案来表示进度的。

1.常用属性

  • android:isIndicator:是否用作指示,设置成true用户无法更改,默认false;不可通过触摸改变RatingBar的进度,
  • android:numStars:设置显示多少个星星,必须为整数;
  • android:rating:默认的评分星级,必须为浮点数;
  • android:stepSize: 评分每次增加的值,默认为0.5,必须为浮点数;

2.其他样式。除了默认的星星图片外,系统还有其他样式

style="?android:attr/ratingBarStyleSmall"

style="?android:attr/ratingBarStyleIndicator"

3.常用操作方法(不知道在哪用/(ㄒoㄒ)/~~)

  • getRating():获取当前评分数,返回值为浮点数;
  • getStepSize():获取用于指定每次最少需要改变多少个星级,返回值为浮点数;
  • getProgress():获取当前评分数,返回整数,半颗星为1;

例子:五星评分

xml文件

    <RatingBar
        android:id="@+id/ratingbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:numStars="5"       `设置几个星星`
        android:rating="1"         `默认几个星星`
        />

java文件

原理:获取组件,设置监听事件,在Toast里用String.valueOf(rating)方法获取值

public class RatingBarActivity extends Activity {
	
	private RatingBar ratingbar;              `声明RatingBar`
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_rating_bar);
		
		ratingbar=(RatingBar) findViewById(R.id.ratingbar);       `获取RatingBar组件`
		
		`设置监听事件`
		ratingbar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
			
			@Override
			public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
				// TODO Auto-generated method stub
				`输出评分-String.valueOf(rating)`
				Toast.makeText(RatingBarActivity.this, "获得的评分是"+String.valueOf(rating),Toast.LENGTH_LONG).show();				
				
			}
		});
				
	}
}

效果:::
Android-高级UI组件-ProgressBar进度条组件-SeekBar拖动条组件-RatingBar星级评分组件

相关标签: Android android