progressBar和Handler实现进度条的加载 和RatingBar评分控件
2016-03-20 12:51
567 查看
progressBar和Handler 一、说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。ProgressBar是表示播放、下载、缓冲进度的一种可视化控件.根据适用场景不同,ProgressBar有4中风格,即progressBarStyle、progressBarStyleHorizontal、progressBarStyleLarge和progressBarStyleSmall.其中progressBarStyle是默认风格和progressBarStyleLarge、progressBarStyleSmall一样,是环形的进度条,这种进度条的好处是可用在无法明确进度值的场景中.progressBarStyleHorizontal风格的ProgressBar为水平进度条,具有主进度和辅进度两个状态,特别适合于具有缓冲的场景,设计上充分考虑了网络需求.二、XML重要属性 android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式三、重要方法 getMax():返回这个进度条的范围的上限 getProgress():返回进度 getSecondaryProgress():返回次要进度 incrementProgressBy(int diff):指定增加的进度 isIndeterminate():指示进度条是否在不确定模式下 setIndeterminate(boolean indeterminate):设置不确定模式下 setVisibility(int v):设置该进度条是否可视 下面实现一个Button点击后,进度条由隐藏变为显示,进度条每秒加10,加满就隐藏进度条 建立一个XML文件用按钮启动进度条 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/proTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="进度" /><ProgressBarandroid:id="@+id/mProgressBar"style="?android:progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:visibility="gone"/><Buttonandroid:id="@+id/startProgressBarBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="启动"/></LinearLayout>下面是java代码package com.gaomin.ProgressBarHandlerDemo;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {private static final int STOP=0;private static final int NEXT=1;private TextView proTextView;private ProgressBar mProgressBar;private Button startProgressBarBtn;Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case STOP:mProgressBar.setProgress(msg.arg1);mProgressBar.setVisibility(View.GONE);break;case NEXT:mProgressBar.setProgress(msg.arg1);break;}super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);proTextView =(TextView)findViewById(R.id.proTextView);mProgressBar =(ProgressBar)findViewById(R.id.mProgressBar);startProgressBarBtn =(Button)findViewById(R.id.startProgressBarBtn);startProgressBarBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mProgressBar.setMax(100);mProgressBar.setProgress(0);mProgressBar.setVisibility(View.VISIBLE);new Thread(new Runnable() {@Overridepublic void run() {for (int i=0;i<10;i++){int pro=10*(i+1);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}if(i==9){Message message =new Message();message.what=STOP;message.arg1=pro;handler.sendMessage(message);}else {Message message =new Message();message.what=NEXT;message.arg1=pro;handler.sendMessage(message);}}}}).start();}});}}运行截图
RatingBar 比较简单
动态显示内容,
属性名称 | 描述 |
android:isIndicator | RatingBar是否是一个指示器(用户无法进行更改) |
android:numStars | 显示的星型数量,必须是一个整形值,像“100”。 |
android:rating | 默认的评分,必须是浮点类型,像“1.2”。 |
android:stepSize | 评分的步长,必须是浮点类型,像“1.2”。 |
<string name="ratingbar_grades">您评价%d分</string>
String string =String.format(getString(R.string.ratingbar_grades),grades);xml文件代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RatingBar android:id="@+id/userRatingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/gradeTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:text="@string/ratingbar_grades" /> <RatingBar android:id="@+id/sysRatingBar" style="?android:ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>下面是java代码的实现过程,
package com.gaomin.RatingBarDemo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.RatingBar; import android.widget.TextView; public class MainActivity extends Activity { private int grades=0; private RatingBar userRatingBar; private RatingBar sysRatingBar; private TextView gradeTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); userRatingBar =(RatingBar)findViewById(R.id.userRatingBar); sysRatingBar =(RatingBar)findViewById(R.id.sysRatingBar); gradeTextView=(TextView) findViewById(R.id.gradeTextView); userRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { ratingBar.setStepSize(2); final int numStars = ratingBar.getNumStars(); gradeTextView.setVisibility(View.VISIBLE); grades =(int)(ratingBar.getRating()*2); String string =String.format(getString(R.string.ratingbar_grades),grades); gradeTextView.setText(string); sysRatingBar.setRating(rating); } }); } }运行截图b
建议大家亲自做一遍,有些问题眼睛是看不出来的,主要自己做了才能发现
相关文章推荐
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- 交换机升级排障实例
- upload上传单张图片
- 图片引发的溢出危机(图)
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- C#图片添加水印的实现代码
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- C#实现图片加相框的方法
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧
- sql2008启动代理未将对象应用到实例解决方案
- C++实现读取图片长度和宽度