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

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" 
        />

效果:::
在这里插入图片描述

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="数值"        
        />

效果:::

在这里插入图片描述

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");
			}
		});	
	}
}

效果:::
在这里插入图片描述

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();				
				
			}
		});
				
	}
}

效果:::
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值