Android UI设计 -----自定义进度条
来源:互联网 发布:scala并发编程 pdf 编辑:程序博客网 时间:2024/06/09 22:26
一、在开发中我们经常要用到进度条显示下载或者加载的进度。系统自带的黄色进度条在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();
- }
- @Override
- public synchronized void setProgress(int progress) {
- super.setProgress(progress);
- setTextProgress(progress);
- }
- @Override
- protected synchronized void onDraw(Canvas canvas) {
- // TODO Auto-generated method stub
- super.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,一个简单的更改背景和样式其带文字显示的进度条就完成。
0 0
- Android UI设计 -----自定义进度条
- Android基础之UI设计与开发---------自定义进度条
- Android基础之UI设计与开发---------自定义进度条
- Android基础之UI设计与开发---------自定义进度条
- Android UI设计:自定义Dialog
- [Android UI]分享:简洁大方的自定义的进度条NumberProgressBar
- android UI自定义设计圆形ImageView
- 【Android UI设计】之自定义计时器
- 自定义View--------Android UI模板设计
- 自定义View----Android UI模板设计
- Android 自定义UI组合控件设计方法
- Android自定义进度条
- Android自定义进度条
- Android自定义进度条
- Android自定义进度条
- android 自定义进度条颜色
- Android自定义进度条颜色
- Android 自定义进度条
- PJSIP手册
- 美联储退出QE后时代 非美市场一路向南
- Erlang学习二
- cocos2D(六)----CCLayer
- 排列组合学习笔记
- Android UI设计 -----自定义进度条
- poj 3613 经过k条边最短路 floyd+矩阵快速幂
- Same Tree(leetcode)
- 讨人厌的org.apache.jasper.JasperException: /index.jsp(14,2) The s:form tag declares that it accepts dyn
- 2014全球可穿戴设备产业链报告分析
- Eclipse-----SVN图标说明
- 排列组合学习笔记之应用在OI
- 积累之解决方案
- svprogresshud