QQ、微信、立体感、中间展开样式进度条

效果图:

这是废话:

<–废话开始–>

就是有这么一个小需求,所以写了。写过几种简单样式的,没有深度。所以这次装X写个好看点的。在娘娘身上搜了半天出来的都是写自定义控件啥的,至于嘛?就一个进度条,还自定义…装X了吧。我这个能用源码的决不自定义的人 就不想看,所以调研了一番,结合以前知识写了本文。

<–废话结束–>
XML 写法(与效果图一一对应):

自定义样式(壹)、

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/secondaryProgress"><clip><shape><gradientandroid:angle="270"android:centerColor="#6F00FF"android:centerY="0.5"android:endColor="#DABDFF"android:startColor="#DABDFF"/></shape></clip></item>
</layer-list>

自定义样式(贰)、

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/secondaryProgress"><clipandroid:clipOrientation="horizontal"android:gravity="center_vertical"><shape><gradientandroid:angle="270"android:centerColor="#6F00FF"android:centerY="0.5"android:endColor="#DABDFF"android:startColor="#DABDFF"/></shape></clip></item>
</layer-list>

QQ样式、

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!--QQ样式--><item android:id="@android:id/background"><shape><gradientandroid:angle="270"android:centerColor="#12B7F5"android:centerY="0.75"android:endColor="#12B7F5"android:startColor="#12B7F5"/></shape></item><item><clip><shape><gradientandroid:centerX="0"android:centerY="0"android:endColor="#A5FFFFFF"android:gradientRadius="360"android:startColor="#FFFFFF"android:type="radial"/></shape></clip></item>
</layer-list>

微信样式

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!--微信样式--><item android:id="@android:id/progress"><clip><shape><gradientandroid:angle="270"android:centerColor="#46C01B"android:centerY="0.5"android:endColor="#46C01B"android:startColor="#46C01B"/></shape></clip></item>
</layer-list>

Style定义、

    <style name="mCustomProgress_horizontal"><item name="android:indeterminateOnly">false</item><item name="android:progressDrawable">@drawable/mprogress_custom_horizontal</item><item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item><item name="android:minHeight">3dip</item><item name="android:maxHeight">20dip</item></style><style name="mCustomProgress_horizontal2"><item name="android:indeterminateOnly">false</item><item name="android:progressDrawable">@drawable/mprogress_custom_horizontal2</item><item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item><item name="android:minHeight">3dip</item><item name="android:maxHeight">20dip</item></style><style name="mQQProgress_horizontal"><item name="android:indeterminateOnly">false</item><item name="android:progressDrawable">@drawable/mprogress_qq_horizontal</item><item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item><item name="android:minHeight">3dip</item><item name="android:maxHeight">20dip</item></style><style name="mWeChatProgress_horizontal"><item name="android:indeterminateOnly">false</item><item name="android:progressDrawable">@drawable/mprogress_wechat_horizontal</item><item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item><item name="android:minHeight">3dip</item><item name="android:maxHeight">20dip</item>

使用、

    <ProgressBarandroid:id="@+id/mCustomProgressBar"style="@style/mCustomProgress_horizontal"android:layout_width="match_parent"android:layout_height="3dip"android:layout_marginTop="5dip"android:background="@android:color/transparent"android:visibility="invisible"/><ProgressBarandroid:id="@+id/mCustomProgressBar2"style="@style/mCustomProgress_horizontal2"android:layout_width="match_parent"android:layout_height="3dip"android:layout_marginTop="5dip"android:background="@android:color/transparent"android:visibility="invisible"/><ProgressBarandroid:id="@+id/mQQProgressBar"style="@style/mQQProgress_horizontal"android:layout_width="match_parent"android:layout_height="3dip"android:layout_marginTop="5dip"android:background="@android:color/transparent"android:visibility="invisible"/><ProgressBarandroid:id="@+id/mWeChatProgressBar"style="@style/mWeChatProgress_horizontal"android:layout_width="match_parent"android:layout_height="3dip"android:layout_marginTop="5dip"android:background="@android:color/transparent"android:visibility="invisible"/>

代码 写法(与效果图一一对应):

个人需要灵活通用的,所以代码写法才是主要在意的。

        /*代码编写样式*//*自定义*/mCodeCustomProgressBar.setProgressDrawable(new ClipDrawable(customStyle("#DABDFF", "#6F00FF", "#DABDFF"), ClipDrawable.VERTICAL, ClipDrawable.HORIZONTAL));mCodeCustomProgressBar2.setProgressDrawable(new ClipDrawable(customStyle("#DABDFF", "#6F00FF", "#DABDFF"), ClipDrawable.HORIZONTAL, ClipDrawable.HORIZONTAL));/*QQ*/mCodeQQProgressBar.setBackgroundColor(Color.parseColor("#12B7F5"));mCodeQQProgressBar.setProgressDrawable(new ClipDrawable(mQQStyle(this, "#A5FFFFFF", "#FFFFFF"), ClipDrawable.VERTICAL, ClipDrawable.HORIZONTAL));/*WetChat*/mCodeWeChatProgressBar.setProgressDrawable(new ClipDrawable(new ColorDrawable(Color.parseColor("#46C01B")), ClipDrawable.VERTICAL, ClipDrawable.HORIZONTAL));

具体方法

public Drawable customStyle(@NonNull String mStartColor, @NonNull String mCenterColor, @NonNull String mEndColor) {GradientDrawable mGradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,new int[]{Color.parseColor(mStartColor), Color.parseColor(mCenterColor),Color.parseColor(mEndColor)});mGradientDrawable.setGradientCenter(0, 0.5f);return mGradientDrawable;}public Drawable mQQStyle(@NonNull Activity mActivity, @NonNull String mStartColor, @NonNull String mEndColor) {GradientDrawable mGradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TL_BR,new int[]{Color.parseColor(mStartColor),Color.parseColor(mEndColor)});mGradientDrawable.setGradientCenter(0, 0);mGradientDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);mGradientDrawable.setShape(GradientDrawable.RECTANGLE);mGradientDrawable.setGradientRadius(mActivity.getWindowManager().getDefaultDisplay().getWidth() / 2);return mGradientDrawable;}

必须要说的一个ClipDrawable类,XML中体现为clip标签。想要有进度条一点一点增长的效果就必须要加上去。ClipDrawable是通过设置一个Drawable的当前显示比例来裁剪出另一张Drawable,你可以通过调节这个比例来控制裁剪的宽高,以及裁剪内容占整个容器的权重,通过ClipDrawable的setLevel()方法调节显示比例可以实现类似Progress进度条的效果。ClipDrawable的level值范围在[0,10000],level的值越大裁剪的内容越少,如果level为10000时则完全显示。

Git托管地址,欢迎Fork

Csdn地址

Csdn下载

QQ、微信、立体感、中间展开样式进度条相关推荐

  1. 微信小程序进度条样式_详解微信小程序——自定义圆形进度条

    微信小程序 自定义圆形进度条,具体如下: 无图无真相,先上图: 实现思路,先绘制底层的灰色圆圈背景,再绘制上层的蓝色进度条. 代码实现: JS代码: 页面初始化 options为页面跳转所带来的参数 ...

  2. 微信小程序之圆形进度条(自定义组件)

    前言 昨天在微信小程序实现了圆形进度条,今天想把这个圆形进度条做成一个组件,方便以后直接拿来用. 根据官方文档自定义组件一步一步来 创建自定义组件 第一步创建项目结构 打开微信开发者工具创建一个项目, ...

  3. 微信小程序进度条组件自定义数字_微信小程序之圆形进度条(自定义组件)

    前言 昨天在微信小程序实现了圆形进度条,今天想把这个圆形进度条做成一个组件,方便以后直接拿来用. 根据官方文档自定义组件一步一步来 创建自定义组遇新是直朋能到件 第一步创建项遇新是直朋能到分览目结构 ...

  4. Mpvue微信小程序时间消耗进度条组件的实现

    实现效果: 组件源码: 组件主要涉及时间的计算.闰年的判断,比较简单,因此注释比较少. <progress></progress>组件为微信小程序官方的进度条. <tem ...

  5. 微信小程序 环形进度条_微信小程序实现圆形进度条实例分享

    本文主要和大家分享微信小程序实现圆形进度条实例,希望能帮助到大家. 小程序中使用圆形倒计时,效果图: 思路使用2个canvas 一个是背景圆环,一个是彩色圆环. 使用setInterval 让彩色圆环 ...

  6. 微信小程序进度条样式_微信小程序组件progress进度条解读和分析

    progress进度条组件说明: 进度条,就是表示事情当前完成到什么地步了,可以让用户视觉上感知事情的执行. progress进度条是微信小程序的组件,和HTML5的进度条progress类似. pr ...

  7. 微信小程序进度条样式_微信小程序——自定义圆形进度条

    无图无真相中比需抖接朋功要朋插,先上图: 实现体朋几一级发等点确层数框的很屏果行4带域思路,先绘制底层的灰色圆圈背景,再绘制上层的直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请蓝色进度条 ...

  8. 微信小程序 - 音频播放进度条和点击拖动的控制,支持自定义音乐播放控件样式布局(wx.createAudioContext)解决各种 InnerAudioContext.onTimeUpdate不执行

    前言 网上有很多关于 InnerAudioContext.onTimeUpdate 不执行.失效的问题,都导致播放进度条无法做了,本文完美解决. 本文实现了 自定义播放音频控件样式,且支持播放进度条显 ...

  9. 微信小程序 环形进度条_微信小程序实现圆形进度条动画

    本文实例为大家分享了微信小程序动画之圆形进度条,供大家参考,具体内容如下 上图: 代码: js: //获取应用实例 var app = getApp() var interval; var varNa ...

最新文章

  1. Windows 下面 redis 发布为服务的官方方法
  2. python整数类型提供了4种进制表示_关于整数类型的 4 种进制表示,哪个选项的描述是正确的?_学小易找答案...
  3. Spring Boot开发MongoDB应用实践
  4. P3369-[模板]普通平衡树【替罪羊树】
  5. win7怎么解压rar文件_win7解压rar文件的方法
  6. LeetCode 507. Perfect Number
  7. What is an Operating System?
  8. python简笔画程序_使用python turtle绘制简笔画大白
  9. 找回密码forget_password
  10. 如何找回 Mac 上 App 或服务器的密码?
  11. GsonFormat的使用 (转)
  12. CSS-返回顶部代码
  13. 空间波束形成matlab仿真,自适应波束形成Matlab仿真
  14. 锐浪报表 Grid++Report 图像打印
  15. 微信计步器怎么不计步_微信运动不计步数是怎么回事?
  16. 如何策划新闻营销的主题?
  17. 苹果HomeKit与谷歌 Home对比:谁是最佳选择?
  18. 基于springboot小型命题系统毕业设计源码011508
  19. 华为、联想:外媒眼中的“中国制造”
  20. 为什么k8s天然适合微服务?

热门文章

  1. Java中的long类型和Long类型比较大小
  2. python软件下载安装教程,python详细安装教程视频
  3. html画圆属性,html 5画圆
  4. 中望CAD调用lisp在哪_中望CAD+加载LISP程序速度提升高达8倍
  5. 【计网】ping命令
  6. 什么是负载均衡(SLB)
  7. 图片缩放cv2.resize()详解
  8. 微信小程序 使用 vant-weapp 组件 van-field 类型为 textarea 在IOS端出现的问题记录
  9. SpringMVC之多文件上传表单
  10. ARM+llinux系统移植3G拨号上网收发短信(一)【转】