Android基础之UI设计与开发---------自定义进度条
来源:互联网 发布:域名 seo 编辑:程序博客网 时间:2024/05/21 20:21
一、在开发中我们经常要用到进度条显示下载或者加载的进度。系统自带的黄色进度条在UI效果上经常不能满足策划或者美工的要求。这就要我们屌丝程序员自己自定义进度条。
话不多说,先上图。
实现步骤一:先定义进度条的风格样式
<!-- 自定义进度条 --> <style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal"> <item name="android:maxHeight">50dip</item> <item name="android:minHeight">8dip</item> <item name="android:indeterminateOnly">false</item> <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item> <item name="android:progressDrawable">@drawable/progressbar_mini</item> </style>
实现步骤二:定义样式style中用到的@drawable/progressbar_mini资源文件。可以再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="5dip" /> <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="0dip" /> <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="5dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#165CBC" android:startColor="#85B0E9" /> </shape> </clip> </item> </layer-list>
实现步骤三:写java文件,定义进度条上显示的文字。
public class MyProgressBar extends ProgressBar {private String text_progress;private Paint mPaint;//画笔public MyProgressBar(Context context) {super(context);initPaint();}public MyProgressBar(Context context, AttributeSet attrs) { super(context, attrs); initPaint(); }public MyProgressBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initPaint(); }@Overridepublic synchronized void setProgress(int progress) {super.setProgress(progress);setTextProgress(progress);}@Overrideprotected synchronized void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);Rect rect=new Rect();this.mPaint.getTextBounds(this.text_progress, 0, this.text_progress.length(), rect); int x = (getWidth() / 2) - rect.centerX(); int y = (getHeight() / 2) - rect.centerY(); canvas.drawText(this.text_progress, x, y, this.mPaint);}/** * *description: 初始化画笔 *Create by lll on 2013-8-13 下午1:41:49 */private void initPaint(){this.mPaint=new Paint();this.mPaint.setAntiAlias(true);this.mPaint.setColor(Color.WHITE);}private void setTextProgress(int progress){ int i = (int) ((progress * 1.0f / this.getMax()) * 100); this.text_progress = String.valueOf(i) + "%";}}
最后一步:xml文件中引用自定义的进度条:
<com.example.widgetshop.MyProgressBar android:id="@+id/progressBar1" style="@style/ProgressBar_Mini" android:layout_width="match_parent" android:layout_height="wrap_content" android:progress="100" android:layout_marginTop="24dp" />
OK,一个简单的更改背景和样式其带文字显示的进度条就完成。
- Android基础之UI设计与开发---------自定义进度条
- Android基础之UI设计与开发---------自定义进度条
- Android基础之UI设计与开发---------自定义进度条
- Android UI设计 -----自定义进度条
- android基础之UI设计与开发一textView大全
- android基础之UI设计与开发--------后台与UI的交互
- android开发之自定义加载进度条
- android开发之自定义圆形进度条(RoundProgressBar)
- Android UI设计与开发
- 【Android UI设计与开发】之详解ActionBar的使用
- 【Android UI设计】之自定义计时器
- Android之自定义进度条
- 【Android 开发】:UI控件之 ProgressBar 进度条的使用
- android开发步步为营之2:开发自定义进度条对话框
- android开发步步为营之25:开发自定义进度条对话框
- Android 开发之 HeartProgress 自定义心形进度条
- Android自定义之圆形进度条
- Android之自定义圆形进度条
- 用Javascript取float型小数点后两位
- Java深入了解String对象
- 联机、脱机、假脱机
- SYBASE学习之一各种实用小工具
- 湫湫系列故事——设计风景线
- Android基础之UI设计与开发---------自定义进度条
- 通过进程ID得到进程名
- 跳跃数的判断
- tools:context=”.MainActivity”与xmlns:tools名字空间
- 如何对谷歌地图的火星坐标进行纠偏校正
- 网络编程简单例子(windows、linux)
- Linux command
- js函数的几种写法
- 解决ADB server didn't ACK问题