Android进度条学习一

DoLengthyWork.java

package tw.android;

import java.util.Calendar;

import android.os.Handler;
import android.widget.ProgressBar;

public class DoLengthyWork extends Thread {

    private Handler mHandler;//对象mHandler用来运行post更新ProgressBar的工作
    private ProgressBar mProBar;//该对象用来存储要用来处理的ProgressBar
    //用来读取系统时间的循环,并持续post更新ProgressBar的工作。
    public void run () {
        Calendar begin = Calendar.getInstance();//用来读取系统的时间
        do {
            Calendar now = Calendar.getInstance();
            final int iDiffSec = 60 * (now.get(Calendar.MINUTE) - begin.get(Calendar.MINUTE)) +
                            now.get(Calendar.SECOND) - begin.get(Calendar.SECOND);

            if (iDiffSec * 2 > 100) {
                mHandler.post(new Runnable() {
                    public void run() {
                        mProBar.setProgress(100);
                    }
                });

                break;
            }

            mHandler.post(new Runnable() {
                public void run() {
                    mProBar.setProgress(iDiffSec * 2);
                }
            });

            if (iDiffSec * 4 < 100)
                mHandler.post(new Runnable() {
                    public void run() {
                        mProBar.setSecondaryProgress(iDiffSec * 4);
                    }
                });
            else
                mHandler.post(new Runnable() {
                    public void run() {
                        mProBar.setSecondaryProgress(100);
                    }
                });
        } while (true);
    }

    void setProgressBar(ProgressBar proBar) {
        mProBar = proBar;
    }

    void setHandler(Handler h) {
        mHandler = h;
    }
}

Main.java

package tw.android;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;

public class Main extends Activity {

    private Handler mHandler = new Handler();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        setupViewComponent();
    }

    private void setupViewComponent() {
        // 從資源類別R中取得介面元件
        final ProgressBar proBar = (ProgressBar)findViewById(R.id.proBar2);

        DoLengthyWork work = new DoLengthyWork();
        work.setHandler(mHandler);
        work.setProgressBar(proBar);
        work.start();
    }
}

在Mina.java中建立一个Handler对象,并且在setupViewComponent()他的内部设置了两个对象。

时间: 2024-12-17 09:58:41

Android进度条学习一的相关文章

Android进度条学习

自定义属性 <!-- roundColor 圆环的颜色 roundProgressColor 进度的颜色 roundWidth 圆环的宽度 textColor 文字颜色 textSize 文字大小 max 最大值 textIsDisplayable 是否显示进度文本 style 样式 STROKE 空心 FILL 实心 --> <declare-styleable name="RoundProgressBar"> <attr name="roun

android 进度条

在之前实现自定义进度条的时候,基本上都是使用ImageView来实现的,见  Android 用Animation-list实现逐帧动画,最近一段时间看到APP的进度条很多都是ProgressBar然后圆圈里面是一张图片,所以就查看了一下ProgressBar的使用. 1.动画实现 定义res/anim/loading.xml,例如: <?xml version="1.0" encoding="UTF-8"?> <animation-list

【Android进度条】三种方式实现自定义圆形进度条ProgressBar

一.通过动画实现 定义res/anim/loading.xml如下: [html] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"?> <animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android"> &

iOS之UI--彩虹动画进度条学习和自主封装改进

前言: 首先展示一下这个iOS小示例的彩色进度条动画效果: 阅读本文先说说好处:对于基础不好的读者,可以直接阅读文末尾的"如何使用彩虹动画进度条"章节,然后将我封装好的这个功能模块类用到你的工程项目中即可. 这个效果的示例是老外Nick Jensen在2013年写的一个作品:使用CAGradientLayer的动画精度条View. 本人阅读了老外的源码之后,觉得老外这个进度条的效果很不错,但是觉得他写的代码有待改进. 小贴士:读者可以直接将老外的源码下载下来,跑一下,然后对比本人写的博

Android——进度条ProgressBar

1.activity_progressbar.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="

Android进度条(星级评分)使用详解(二)

一.SeekBar拖动条使用 SeekBar继承于ProgressBar,ProgressBar所支持的XML属性和方法完全适用于SeekBar.拖动条和进度条的区别是:进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块位置来标识数值并且运行用户拖动滑块来改变值.因此,拖动条通常用于对系统的某种数值进行调节,比如调节音量.图片的透明度等. 1.拖动条效果 2.代码实现 功能:通过拖动滑块该动态改变图片的透明度 public class MainActivity extends Actio

android 进度条ProgressBar样式设置

普通圆形ProgressBar 该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中.一般只要在XML布局中定义就可以了. <progressBar Android:id="@+id/widget43" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="

&lt;Android&gt;进度条

Android中的进度条有多种:对话框进度条,标题栏进度条和水平进度条 1.对话框进度条 a)         覆盖Activity的onCreateDialog()方法,并在其中创建对话框. b)        调用Activity的showDialog()方法,显示进度条对话框. public class MainActivity extends Activity { private Button myBtn; @Override public void onCreate(Bundle sa

Android 进度条改变图片透明度

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent