Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 651|回复: 0

Andorid---UI篇---两种进度条(ProgressBar)-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 15:02:34 | 显示全部楼层 |阅读模式
在执行一些后台操作的时候,比如加载游戏,播放歌曲时,用户根本不知道程序执行的进度情况,这时候,可以使用进度条来显示这些进度
Andorid系统提供两种进度条,长条形进度条(progressBarStyleHorizontal)和圆形进度条(progressBarStyleLarge),Android平台默认的进度条是第二种。另外,还可以在窗体的标题栏设置进度条,这就需要先对窗体的显示风格进行设置“requestWindowFeature(Window.FEATURE_PROGRESS)”;如果要显示这个进度条,还要使用setProgressBarVisibility(true);方法来使其显示

下面是个例子,分别由标题栏进度条,长条形进度条和圆形进度条组成,并用线程控制。
注意:圆形进度条是不会显示具体的进度的,而只是单纯的旋转


java代码
package org.hualang.progress;



import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.view.Window;

import android.widget.Button;

import android.widget.ProgressBar;



public class ProgressBarTest extends Activity

{

        //声明ProgressBar对象

        private ProgressBar pro1;

        private ProgressBar pro2;

        private Button btn;

        protected static final int STOP_NOTIFIER = 000;

        protected static final int THREADING_NOTIFIER = 111;

        public int intCounter=0;

        /** Called when the activity is first created. */

        @Override

        public void onCreate(Bundle savedInstanceState)

        {

                super.onCreate(savedInstanceState);

                //设置窗口模式,,因为需要显示进度条在标题栏

                requestWindowFeature(Window.FEATURE_PROGRESS);

                //设置标题栏上的进度条可见

                setProgressBarVisibility(true);

                setContentView(R.layout.main);

               

                //取得ProgressBar

                pro1 = (ProgressBar) findViewById(R.id.progress1);

                pro2= (ProgressBar) findViewById(R.id.progress2);

                btn = (Button)findViewById(R.id.button);

                //设置进度条是否自动运转,即设置其不确定模式,false表是不自动运转

                pro1.setIndeterminate(false);

                pro2.setIndeterminate(false);

               

                //当按钮按下时开始执行,

            btn.setOnClickListener(new Button.OnClickListener()

            {

              @Override

              public void onClick(View v)

              {

                // TODO Auto-generated method stub

                     

                      //设置ProgressBar为可见状态

                      pro1.setVisibility(View.VISIBLE);

                      pro2.setVisibility(View.VISIBLE);

                      //设置ProgressBar的最大值

                      pro1.setMax(100);

                      //设置ProgressBar当前值

                      pro1.setProgress(0);

                      pro2.setProgress(0);



                      //通过线程来改变ProgressBar的值

                                new Thread(new Runnable() {

                                        public void run()

                                        {

                                                for (int i = 0; i < 10; i++)

                                                {

                                                        try

                                                        {

                                                                intCounter = (i + 1) * 20;

                                                                Thread.sleep(1000);



                                                                if (i == 4)

                                                                {

                                                                        Message m = new Message();



                                                                        m.what = ProgressBarTest.STOP_NOTIFIER;

                                                                        ProgressBarTest.this.myMessageHandler.sendMessage(m);

                                                                        break;

                                                                }

                                                                else

                                                                {

                                                                        Message m = new Message();

                                                                        m.what = ProgressBarTest.THREADING_NOTIFIER;

                                                                        ProgressBarTest.this.myMessageHandler.sendMessage(m);

                                                                }

                                                        }

                                                        catch (Exception e)

                                                        {

                                                                e.printStackTrace();

                                                        }

                                                }

                                        }

                                }).start();

                        }

                });

        }



          Handler myMessageHandler = new Handler()

          {

            // @Override

                  public void handleMessage(Message msg)

                  {

                          switch (msg.what)

                          {

                          //ProgressBar已经是对大值

                          case ProgressBarTest.STOP_NOTIFIER:

                                  pro1.setVisibility(View.GONE);

                                  pro2.setVisibility(View.GONE);

                                  Thread.currentThread().interrupt();

                                  break;

                          case ProgressBarTest.THREADING_NOTIFIER:

                                  if (!Thread.currentThread().isInterrupted())

                                  {

                                          // 改变ProgressBar的当前值

                                          pro1.setProgress(intCounter);

                                          pro2.setProgress(intCounter);

                                          

                                          // 设置标题栏中前景的一个进度条进度值

                                          setProgress(intCounter*100);

                                          // 设置标题栏中后面的一个进度条进度值

                                          setSecondaryProgress(intCounter*100);//

                                  }

                                  break;

                          }

                          super.handleMessage(msg);

                 }

          };

}
复制代码

main.xml

Java代码
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    androidrientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView  

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="进度条实例演示"

    />

&ltrogressBar

        android:id="@+id/progress1"

        style="?android:attr/progressBarStyleHorizontal"---设置进度条为长条形

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:visibility="gone"---设置其不可见

/>

<ProgressBar

        android:id="@+id/progress2"

        style="?android:attr/progressBarStyleLarge"---设置进度条为圆形进度条

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:max="100"---设置其最大值

        android:progress="50"---设置当前进度值

        android:secondaryProgress="70"---设置次要进度值

        android:visibility="gone"

/>

<Button

        android:id="@+id/button"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="启动进度条"

/>

</LinearLayout>
复制代码

运行结果如下:



点击启动进度条按钮后,进度条将自动运行






当结束时,自动退出进度条程序,返回第一个图片的样子
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 15:02:38 | 显示全部楼层

Re:Andorid---UI

挺好的,顶一下了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 15:02:46 | 显示全部楼层

Re:Andorid---UI

好贴。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 14:27 , Processed in 0.300420 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表