Android 学习入门——修改progressbar的默认样式

开发环境

android studio 2.0

最终效果

这里写图片描述

创建xml布局

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar"
        android:layout_alignParentTop="true"
        android:max="100"
        android:progress="0"
        android:progressDrawable="@drawable/progressbar"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

@drawable/progressbar是自定义的progressbar的样式。要修改的样式都集中在progressbar这个文件中。下面首先在drawable文件夹下创建xml文件。

定义样式

新建样式布局文件progressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--
    对layer-list样式,是按照顺序堆叠的,所以最上层的放在最后面,而且如果设置了progressDrawable
    的属性,再去设置progressbar的background是没有效果的
    -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="10dp" />         <!-- 圆角 -->

            <solid android:color="@color/gyGrey" />   <!-- 描边 -->
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="10dp"/>
                <stroke android:color="@color/gyGrey"
                        android:width="2dp"/>
                <gradient
                    android:angle="0"
                    android:startColor="@color/gyGreen"
                    android:endColor="@color/gyDeepGreen"/>
            </shape>
        </clip>
    </item>
</layer-list>

其中具体的每一配置项可参考这篇博文:样式说明

测试

Handler + Runnable 实现刷新进度,当然也可以利用HandlerhandleMessage()方法和Runnable共同实现。在runnablerun()方法中传递Message到里面,将需要更新的值传递过去。

1. 创建线程


在主方法中定义两个变量 handler和runna

Handler handler= new Handler();
    Runnable runnable = new Runnable() {
        int i=0;
        @Override
        public void run() {
            if(i<=100){
                //System.out.println("post the thread");
                i+=5;
                progressBar.setProgress(i);
                handler.postDelayed(runnable,500);
            }
        }
    };

2. 开启线程

可以在OnCreate()方法或者button的OnClick()方法中将创建好的Runable 接口post到线程池中即可,这样就可以看到进度条自动刷新直到结束。

handler.post(runnable);

初学,有不对的地方,望指正!

发布了34 篇原创文章 · 获赞 30 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览