【Android开发】高级组件-拖动条和星级评分条

在Android中,提供了两种允许用户通过拖动来改变进度的组件,分别是拖动条(SeekBar)和星级评分条(RatingBar),下面分别进行介绍

1.拖动条
拖动条与进度条相似,所不同的是,拖动条允许用户拖动滑块来改变值,通常用于实现对某种数值的调节。例如,调节图片的透明度或者音量。

在XML布局文件中的语法格式:
<SeekBar
    android:layout_height="warp_content"
    android:id="@+id/seekBar1"
    android:max="100"
    android:progress="50"
    android:layout_width="warp_content">
</SeekBar>

由于拖动条可以被用户控制,所以需要为其添加OnSeekBarChangeListener监听器。

下面用实例说明用法:

效果图:

具体实现代码:
res/layout/main.xml:(默认拖动条的进度是50,最大进度是100)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	android:background="#000000">
	<TextView android:text="当前值:50"
	    android:id="@+id/textView1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"/>
	<!-- 拖动条 -->
	<SeekBar android:id="@+id/seekBar1"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:padding="10px"
	    android:max="100"
	    android:progress="50"/>
</LinearLayout>

MainActivity:

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.Toast;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {
     private SeekBar seekbar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		final TextView result=(TextView)findViewById(R.id.textView1);
		seekbar=(SeekBar)findViewById(R.id.seekBar1);
		seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			//当用户结束滑动拖动条的时候执行的方法
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				Toast.makeText(MainActivity.this,"结束滑动", Toast.LENGTH_SHORT).show();
			}

			//当用户开始滑动拖动条的时候执行的方法
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				Toast.makeText(MainActivity.this,"开始滑动", Toast.LENGTH_SHORT).show();
			}

			//当用户正在滑动拖动条的时候执行的方法(参数progress就是目前拖动条的进度)
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
				result.setText("当前值:"+progress);
			}
		});
	}
}

实现效果:用户刚用手触碰上去正准备开始拖动,显示"开始滑动"提示,拖动过程"当前值:"在随着拖动进度变化,手指停止拖动时,显示"结束滑动"。

2.星级评分条
星级评分条与拖动条类似,都允许用户拖动来改变进度,所不同的是,星级评分条通过星星图案表示进度。通常情况下星级评分条表示对某一事物的支持度或对某种服务的满意度等。例如,淘宝中对卖家的好评度,就是通过星级评分条实现的。

在XML布局文件中的语法格式:
<RatingBar
    属性列表
>
</RatingBar>

支持的XML属性:
android:isIndicator 用于指定该星级评分条是否允许用户该表,true为不允许改变
android:numStars 用于指定该星级评分条总共有多少个星
android:rating  用于指定该星级评分条默认的星级
android:stepSize  用于指定每次最少需要改变多少个星级,默认为0.5个

除了上面的属性以外,星级评分条还提供了一下3个比较常用的方法:
getRating()方法,获取等级,表示选中了几颗星
getStepSize()方法,用于获取每次至少改变多少个星级
getProgress()方法,用于获取进度,获取到的进度值为getRating()方法返回值除以getStepSize()方法返回的值。

下面通过一个具体实例说明星级评分条的应用:
效果如图:

res/layout/main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	android:background="#000000">
	<!-- 星级评分条 -->
	<RatingBar android:id="@+id/ratingBar1"
	    android:numStars="5"
	    android:rating="3.5"
	    android:isIndicator="true"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"/>
	<!-- 按钮 -->
	<Button android:text="提交"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:id="@+id/button1"/>
</LinearLayout>

MainActivity:

package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.Toast;

public class MainActivity extends Activity {
	private RatingBar ratingBar;//星级评分条
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		ratingBar=(RatingBar)findViewById(R.id.ratingBar1);//获取星级评分条
		Button button=(Button)findViewById(R.id.button1);//获取“提交”按钮
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				int result=ratingBar.getProgress();//获取进度
				float rating=ratingBar.getRating();//获取等级
				float step=ratingBar.getStepSize();//获取每次最少要改变多少星级
				Log.i("星级评分条", "step="+step+" result="+result+" rating="+rating);
				Toast.makeText(MainActivity.this, "你得到了"+rating+"颗星",Toast.LENGTH_SHORT).show();
			}
		});
	}
}

点击按钮之后控制台输出的信息如图:

转载请注明出处:http://blog.csdn.net/acmman/article/details/44904123

时间: 2024-11-16 03:27:42

【Android开发】高级组件-拖动条和星级评分条的相关文章

Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar

原文:Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar    前面两期都在学习ProgressBar的使用,关于自定义ProgressBar的内容后期会继续学习的,本期先来学习ProgressBar的2个子组件SeekBar和RatingBar.       一.SeekBar       拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值--而且拖动条允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种

【Android开发】高级组件-进度条

当一个应用在后台执行时,前台界面不会有任何信息,这是用户根本不知道程序是否在执行以及执行进度等,因此需要使用进度条来提示程序执行的进度.在Android中,进度条(ProgressBar)用于向用户显示某个耗时操作完成的百分比. 在屏幕中添加进度天,可以在XML布局文件中通过<ProgressBar>标记添加,基本语法格式如下: <ProgressBar     属性列表  > </ProgressBar> ProgressBar组件支持的XML属性如下所示: andr

Android 开发音频组件(Vitamio FAQ)详细介绍_Android

 一.Vitamio介绍   1.1 Vitamio是什么?    Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里.    Vitamio官网:http://vitamio.org/    Vitamio微博:http://weibo.com/vitamio     VPlayer官网:http://vplayer.net    Vitamio豆瓣:http://site.douban.com/1

Android 开发音频组件(Vitamio FAQ)详细介绍

一.Vitamio介绍 1.1 Vitamio是什么? Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里. Vitamio官网:http://vitamio.org/ Vitamio微博:http://weibo.com/vitamio VPlayer官网:http://vplayer.net Vitamio豆瓣:http://site.douban.com/145815/ 1.2 关于Vitami

Android开发四大组件Activity/Service/Broadcast Receiver/Content Provider详解

Android开发的四大组件一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重要组件 intent的详解. 一.Activity详解 Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()-->onStart()-->onResume() 当另一个Activity启动时:第一个Activity onPause()-->第二个Activity  

Android开发四大组件之实现电话拦截和电话录音_Android

一.问题描述 使用BordercastReceiver和Service组件实现下述功能: 1.当手机处于来电状态,启动监听服务,对来电进行监听录音. 2.设置电话黑名单,当来电是黑名单电话,则直接挂断. 当拨打电话或电话状态发生改变时,系统就会发出有序广播,因此我们可以使用BordercastReceiver接受广播,因BordercastReceiver执行时间短不能执行耗时任务也不能使用子线程,因此我们应启动一个Service来监听电话并进行处理 二.加入AIDL文件 Android没有对外

拖动条SeekBar及星级评分条

1.布局 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 andr

一个帖子学会Android开发四大组件

原贴地址http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 写的非常不错.

Android学习笔记(24):进度条组件ProgressBar及其子类

ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条).   ProgressBar支持的XML属性: Attribute Name Related Method Description style   设置ProgressBar指定风格 android:indeterminate   设置为true时,进度条不显示进度 android:indeterminateBehavior   indeterminate模式下,当进度条达到最大值时的