您的位置:首页 > 其它

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:isIndicatorRatingBar是否是一个指示器(用户无法进行更改)
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
建议大家亲自做一遍,有些问题眼睛是看不出来的,主要自己做了才能发现

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息