自定义progressBar(进度条)
2015-12-28 10:31
363 查看
首先在drawable文件夹下画出progressBar的形状
shape_progressbar.xml
在styles.xml中引用这个画出的progressBar,shape_progressbar.xml
在styles.xml中加入
在需要加入该进度条的布局文件中加入我们自定义的ProgressBar
这样便成功自定义了一个ProgressBar
shape_progressbar.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background"> <shape> <corners android:radius="20dp" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#F5F5F5" android:startColor="#BEBEBE" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="20dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#165CBC" android:startColor="#85B0E9" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="20dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#165CBC" android:startColor="#85B0E9" /> </shape> </clip> </item> </layer-list>
在styles.xml中引用这个画出的progressBar,shape_progressbar.xml
在styles.xml中加入
<style name="ota_progressbar" parent="@android:style/Widget.ProgressBar.Horizontal"> <item name="android:maxHeight">50dp</item> <item name="android:minHeight">8dp</item> <item name="android:indeterminateOnly">false</item> <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item> <item name="android:progressDrawable">@drawable/shape_progressbar</item> </style>写Java类来继承ProgressBar,自定义一个ProgressBar,起名叫OtaProgressBar
package com.hipad.fota.activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.text.TextPaint; import android.util.AttributeSet; import android.widget.ProgressBar; public class OtaProgressBar extends ProgressBar { private String mTextProgress; private Paint mPaint; public OtaProgressBar(Context context) { super(context); initPaint(); } public OtaProgressBar(Context context, AttributeSet attrs) { super(context, attrs); initPaint(); } public OtaProgressBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initPaint(); } @Override public synchronized void setProgress(int progress) { super.setProgress(progress); setTextProgress(progress); } private void initPaint() { mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setColor(Color.WHITE); mPaint.setTextSize(30); } private void setTextProgress(int progress){ int i = (int)((progress * 1.0f / getMax()) * 100); mTextProgress = String.valueOf(i) + "%"; } @Override protected synchronized void onDraw(Canvas canvas) { super.onDraw(canvas); Rect rect = new Rect(); mPaint.getTextBounds(mTextProgress, 0, mTextProgress.length(), rect); int x = (getWidth() / 2) - rect.centerX(); int y = (getHeight() / 2) - rect.centerY(); canvas.drawText(mTextProgress, x, y, mPaint); } }
在需要加入该进度条的布局文件中加入我们自定义的ProgressBar
<com.hipad.fota.activity.OtaProgressBar android:id="@+id/ota_progressbar" style="@style/ota_progressbar" android:layout_width="match_parent" android:layout_height="50dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" > </com.hipad.fota.activity.OtaProgressBar>
这样便成功自定义了一个ProgressBar
相关文章推荐
- SpringMVC 定时任务执行两次问题的解决方案
- iOS生成同时支持armv7,armv7s,i386的静态库.a文件
- 多窗口类似支付宝,百度云的保护页面,当软件进入后台后,生成保护页面来验证,验证成功以后继续操作
- Apache Stratos探究:为什么要使用 Apache Stratos
- Android AysncTask的使用
- 准备跳槽了
- SAS学习笔记6
- Java线程篇(六):线程池
- GC基本算法及C++GC机制
- 禅道程序员的10条原则
- Jboss 数据源配置参数
- SpeedyCloud-云计算之旅
- POJ 3254 状态压缩DP
- Java线程篇(五):Timer和TimerTask
- win7下使用cpan安装Perl模块
- Nodejs socket.io 实现私聊:如何给指定客户端发送消息,不是群广播
- vs2008中C++项目编译过程中越来越慢
- 谷歌试验无密码登录
- leetcode 24 -- Swap Nodes in Pairs
- Mysql中TO_DAYS函数