zoukankan      html  css  js  c++  java
  • ProgressBar的简单使用

    当我们的应用在进行耗时操作时,显示一个进度条呈现给用户。让用户知道当前进度是一个非常好的体验,接下来我们就来简单了解下ProgressBar(本文主要针对刚開始学习的人。大神能够绕开啦),先看效果图:





    进度条ProgressBar共同拥有几种样式。如圆形,长条形等等,本例中用的是长条形:

    style="@android:style/Widget.ProgressBar.Horizontal"
    进度是由5-0,逆向显示的,也就是一个倒计时。方法主要是Thread+Handler,在线程中通过不断变化的进度值,将消息通过handler传递给主线程并更新UI:

    主程序(MainActivity)代码:

    package com.example.progressBar;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	private ProgressBar progressBar;
    	private TextView progressText;
    	private Button btn;
    	private int progress=5;
    	private Handler handler;
    	
    	@SuppressLint("HandlerLeak")
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		progressBar=(ProgressBar) findViewById(R.id.progressBar);
    		progressBar.setProgress(5);
    		progressText=(TextView) findViewById(R.id.progressText);
    		btn=(Button) findViewById(R.id.btn);
    		btn.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View arg0) {
    				//子线程完毕耗时操作
    			    new Thread(new Task()).start();
    			}
    		});
    		
    		//主线程更新UI
    		handler=new Handler(){
    			@Override
    			public void handleMessage(Message msg) {
    				switch (msg.what) {
    				case 0:
    					progressBar.setProgress(progress);//更新进度
    					progressText.setText(""+progress);
    					break;
    				case 1:
    					progressBar.setProgress(0);
    					progressText.setText("0");
    					Toast.makeText(getApplicationContext(), "进入游戏。!!

    ", Toast.LENGTH_SHORT).show(); break; } }; }; } private class Task implements Runnable { @Override public void run() { while (true) { dowork(); Message msg = new Message(); if (progress < 5&&progress>0) { msg.what = 0; handler.sendMessage(msg); } else if (progress <=0) { msg.what = 1; handler.sendMessage(msg); break; } } } } //耗时操作,每运行一次,暂停一秒 private void dowork() { try { Thread.sleep(1000); --progress; } catch (InterruptedException e) { e.printStackTrace(); } } }


    布局:

    <RelativeLayout 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"
        >
        
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="開始"/>
    
        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="match_parent"
            android:layout_height="3dp"
            android:layout_centerInParent="true"
            android:max="5" 
            style="@android:style/Widget.ProgressBar.Horizontal"/>
        <TextView 
            android:id="@+id/progressText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_below="@+id/progressBar"
            android:text="5"
            android:textSize="20sp"/>
    
    </RelativeLayout>
    

    源代码地址:http://download.csdn.net/detail/baiyuliang2013/7322607

  • 相关阅读:
    leetcode 78. 子集 JAVA
    leetcode 91. 解码方法 JAVA
    leetcode 75. 颜色分类 JAVA
    leetcode 74 搜索二维矩阵 java
    leetcode 84. 柱状图中最大的矩形 JAVA
    last occurance
    first occurance
    classical binary search
    LC.234.Palindrome Linked List
    LC.142. Linked List Cycle II
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7080586.html
Copyright © 2011-2022 走看看