进度条(Progressbar)

提供如下一些样式改变进度条的外观

@android:style/Widget.ProgressBar.Horizontal(水平进度条)

@android:style/Widget.ProgressBar.Inverse(普通大小的环形进度条)

@android:style/Widget.ProgressBar.Large(大环形进度条)

@android:style/Widget.ProgressBar.Large.Inverse(大环形进度条)

@android:style/Widget.ProgressBar.Small(小环形进度条)

@android:style/Widget.ProgressBar.Small.Inverse(小环形进度条)

常用属性:

max:设置该进度条的最大值

progress:设置该进度条已完成的进度值

progressDrawable:设置该进度条的轨道对应的Drawable对象(是一个xml文件)

下面我们直接看代码:

1.Activity

//进度条
public class ProgressBarActivity extends Activity {

    private ProgressBar progressBarDefaultStyle1;
    private ProgressBar progressBarDefaultStyle2;
    private Button button;

    private Handler handler = new Handler(){
        public void handleMessage(Message msg) {
            int flag = msg.arg1;
            if(flag <= 100){
                progressBarDefaultStyle1.setProgress(flag);
            }
            if (flag <= 200) {
                progressBarDefaultStyle2.setProgress(flag/2);

            }
            if (flag==201){
                progressBarDefaultStyle1.setProgress(0);
                progressBarDefaultStyle2.setProgress(0);
                button.setEnabled(true);
                timerTask.cancel();
            }
        }
    };
    private Timer timer = new Timer();
    private SendMsgTimerTask timerTask = new SendMsgTimerTask();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress_bar);

        progressBarDefaultStyle1 = (ProgressBar)findViewById(R.id.progressBarDefaultStyle1Id);
        progressBarDefaultStyle2 = (ProgressBar)findViewById(R.id.progressBarDefaultStyle2Id);
        button = (Button) findViewById(R.id.buttonId);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                button.setEnabled(false);
                timer.schedule(timerTask, 5, 100);
            }
        });

    }

    class SendMsgTimerTask extends TimerTask{
        int flag = 0;
        public void run() {
            Message msg = new Message();
            msg.arg1 = ++flag;
            handler.sendMessage(msg);
            Log.i("msg.arg1", "发消息:"+msg.arg1);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        timer.cancel();
    }

}

2.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp" >

    <!-- 定义一个普通大小的环形进度条 -->

    <ProgressBar
        android:id="@+id/progressBarInverseStyleId"
        style="@android:style/Widget.ProgressBar.Inverse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <!-- 定义一个大环形进度条 -->

    <ProgressBar
        android:id="@+id/progressBarLargeStyleId"
        style="@android:style/Widget.ProgressBar.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarInverseStyleId" />

    <!-- 定义一个大环形进度条 -->

    <ProgressBar
        android:id="@+id/progressBarLargeInverseStyleId"
        style="@android:style/Widget.ProgressBar.Large.Inverse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarLargeStyleId" />

    <!-- 定义一个小环形进度条 -->

    <ProgressBar
        android:id="@+id/progressBarSmallStyleId"
        style="@android:style/Widget.ProgressBar.Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarLargeInverseStyleId" />

    <!-- 定义一个小环形进度条 -->
    <ProgressBar
        android:id="@+id/progressBarSmallInverseStyleId"
        style="@android:style/Widget.ProgressBar.Small.Inverse"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarSmallStyleId" />

    <!-- 定义一个默认样式的水平进度条 -->
    <ProgressBar
        android:id="@+id/progressBarDefaultStyle1Id"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarSmallInverseStyleId"
        android:max="100" />

    <!-- 定义一个指定样式的水平进度条 -->
    <!-- bar_state是一个图片状态文件 -->
    <ProgressBar
        android:id="@+id/progressBarDefaultStyle2Id"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarDefaultStyle1Id"
        android:max="100"
        android:progressDrawable="@drawable/bar_state" />

    <Button
        android:id="@+id/buttonId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/progressBarDefaultStyle2Id"
        android:text="模拟耗时操作" />

</RelativeLayout>

3.进度条的布局文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 定义轨道的背景 -->
    <item android:id="@android:id/background" android:drawable="@drawable/no"/>
    <!-- 定义轨道的成功图像 -->
    <item android:id="@android:id/progress" android:drawable="@drawable/yes"/>
</layer-list>

4.效果显示图

时间: 2024-11-12 00:21:37

进度条(Progressbar)的相关文章

Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)

/** * 带文本提示的进度条 */ public class TextProgressBar extends ProgressBar { private String text; private Paint mPaint; public TextProgressBar(Context context) { super(context); initText(); } public TextProgressBar(Context context, AttributeSet attrs, int d

Android零基础入门第51节:进度条ProgressBar

不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有APP的开发,还会经常用到一些诸如进度条.拖动条.搜索框.时间和日期选择器等组件,那么后面几期就来一起学习这些高级组件. 一.ProgressBar系列组件 ProgressBar也是一组重要的组件,ProgressBar本身代表了进度条组件,它还派生了两个常用的组件:SeekBar和RatingBar.ProgressBar及其子类在用法上十分相似,只是显示界面有一定的

【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"> &

WPF 进度条ProgressBar

今天研究了一下wpf的进度条ProgressBar 1.传统ProgressBar WPF进度条ProgressBar 这个控件,如果直接写到循环里,会死掉,界面会卡死,不会有进度.需要把进度条放到单独的线程中. 传统的需要建立 Thread 或者使用 Timer,分别写在不同的方法中.但现在,使用 Dispatcher.Invoke 调用可以实现这个目的. for (int i = 0; i <= 10000; i++)            {                double v

Android-SpinKit 进度条 (ProgressBar)

项目地址: https://github.com/ybq/Android-SpinKit 类别: 进度条 (ProgressBar) 打分: ★★★★★ 更新: 2016-03-28 11:17 大小: 5306 kb 开发环境: Android Studio 浏览: 6538 次 下载: 746 次 ybq / Android-SpinKit Android loading animations https://ybq.github.io/Android-SpinKit 5,665934 介绍

Android学习笔记:进度条ProgressBar的使用以及与AsyncTask的配合使用

ProgressBar时android用于显示进度的组件.当执行一个比较耗时的操作(如io操作.网络操作等),为了避免界面没有变化让用户体验降低,提供一个进度条可以让用户知道程序还在运行. 一.ProgressBar有如下几种常见样式 1.默认进度条的样式为圆圈(为中等大小的圆圈) <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" />

如何实现圆形的进度条(ProgressBar)

在我们实际的工作中可能经常使用到圆形的进度条,但是这是怎么实现的呢?其实这只不过是修改了一下ProgressBar的模板,我们在下面的代码中我们将ProgressBar的Value值绑定到Border的Background上面,并且使用了一个ValueToProcessConverter的转换器进行相应地转换,这里重点介绍一下这个转换器 <ProgressBar Name="pb" Minimum="0" Maximum="100" >

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 进度条ProgressBar样式设置

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

进度条ProgressBar及ProgressDialog

Main代码 1 package processdemo.example.administrator.processbardemo; 2 3 import android.app.Dialog; 4 import android.app.ProgressDialog; 5 import android.content.DialogInterface; 6 import android.os.Bundle; 7 import android.support.v7.app.AppCompatActi