zoukankan      html  css  js  c++  java
  • 仿微信小视屏拍摄的进度条/自定义的progressBar的样式。

    今天有个需求,就是需要倒计时的进度条,样式参考微信小视屏拍摄的效果。

    就是两头往中间缩进的那种效果。

    第一步:

    先自定义progressBar的样式。

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 背景  gradient是渐变,corners定义的是圆角 -->
        <item android:id="@android:id/background">
            <shape>
                <solid android:color="#DA6547" />
            </shape>
        </item>
        <!-- 第二条进度条颜色 -->
        <item android:id="@android:id/secondaryProgress">
            <clip>
                <shape>
                    <solid android:color="#ffffff" />
                </shape>
            </clip>
        </item>
        <!-- 进度条 -->
        <item android:id="@android:id/progress">
            <clip>
                <shape>
                    <solid android:color="#DA6547" />
                </shape>
            </clip>
        </item>
    </layer-list>
    

      

    第二步:

    在布局文件里面的progress引用。

       <ProgressBar
                android:progressDrawable="@drawable/roar_progressbar_color"
                android:id="@+id/pb_progress"
                style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="match_parent"
                android:layout_height="3dp" />
    

    注意:设置progressBar的样式,为横向。

    如此基本实现了通常效果。

    然后现在要实现微信小视屏的这种两头往中间的效果,这个时候就利用下,Progress和SecondaryProgress这两个进度去控制。

    首先,我们在样式中定义的东西就发挥重大的作用。

    注意:我们的progress和background的颜色保持一致。这样会产生往里面走的效果。

    然后我们手动去设置进度的大小就能实现。

    先获取大小。

       //进度条
            pbTime.setProgress(0);
            pbTime.setSecondaryProgress(pbTime.getMax());
    //保存第一进度和第二进度的数据
            mPro = pbTime.getProgress();
            mSpro = pbTime.getMax();

    最后手动设置(这段代码需要不断的去回调,产生效果。)。

            pbTime.setProgress(mPro += 1);
            pbTime.setSecondaryProgress(mSpro -= 1);

    最后实现了效果。

      

  • 相关阅读:
    STL 算法 std::min
    SAP UI5 初学者教程之五:视图控制器初探 试读版
    SAP UI5 的初始化过程
    Angular 应用里的摇树优化
    Angular 应用里的 vendor.js 是用来干什么的?
    SAP UI5 初学者教程之四:XML 视图初探试读版
    SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 试读版
    SAP UI5 初学者教程之二:SAP UI5 的引导过程(Bootstrap) 试读版
    SAP UI5 初学者教程之一:Hello World 试读版
    SAP UI5 初学者教程的学习目录
  • 原文地址:https://www.cnblogs.com/itpepe/p/4872760.html
Copyright © 2011-2022 走看看