自定义Button成进度条
ProgressButton源码:
package com.example.progressbutton; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.Button; /**
* @author Administrator
* @time 2015-7-19 下午4:41:06
* @des TODO
*
* @version $Rev$
* @updateAuthor $Author$
* @updateDate $Date$
* @updateDes TODO
*/
public class ProgressButton extends Button {
private boolean mProgressEnable;
private long mMax = 100;
private long mProgress;
private Drawable mProgressDrawable; /**设置是否允许进度*/
public void setProgressEnable(boolean progressEnable) {
mProgressEnable = progressEnable;
} /**设置进度的最大值*/
public void setMax(long max) {
mMax = max;
} /**设置当前的进度,并且进行重绘操作*/
public void setProgress(long progress) {
mProgress = progress;
invalidate();
} /**设置progressButton的进度图片*/
public void setProgressDrawable(Drawable progressDrawable) {
mProgressDrawable = progressDrawable;
} public ProgressButton(Context context, AttributeSet attrs) {
super(context, attrs);
} public ProgressButton(Context context) {
super(context);
} @Override
protected void onDraw(Canvas canvas) {
if (mProgressEnable) {
Drawable drawable = new ColorDrawable(Color.BLUE);
int left = 0;
int top = 0;
int right = (int) (mProgress * 1.0f / mMax * getMeasuredWidth() + .5f);
int bottom = getBottom();
drawable.setBounds(left, top, right, bottom);// 必须的.告知绘制的范围
drawable.draw(canvas);
} super.onDraw(canvas);// 绘制文本,还会绘制背景
}
}
控制显示Demo:
package com.example.progressbutton; import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void click(final View view) { new AsyncTask<Void, Integer, Void>() {
int progress=0;
private ProgressButton mButton;
@Override
protected void onPreExecute() {
mButton = (ProgressButton) view;
mButton.setProgressEnable(true);
} @Override
protected Void doInBackground(Void... params) {
for (int i = 0; i <= 100; i++) {
SystemClock.sleep(100);
publishProgress(i);
}
return null;
} @Override
protected void onProgressUpdate(Integer... values) {
mButton.setProgress(values[0]);
mButton.setText(values[0]+"%");
} protected void onPostExecute(Void result) { }; }.execute(); } }
效果图:

自定义Button成进度条的更多相关文章
- Android零基础入门第52节:自定义酷炫进度条
原文:Android零基础入门第52节:自定义酷炫进度条 Android系统默认的ProgressBar往往都不能满足实际开发需要,一般都会开发者自定义ProgressBar. 在Android开发中 ...
- Android简易实战教程--第十七话《自定义彩色环形进度条》
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52203533 点击打开链接 在Android初级教程里面,介绍了shape用法 ...
- Android自定义圆角矩形进度条2
效果图: 或 方法讲解: (1)invalidate()方法 invalidate()是用来刷新View的,必须是在UI线程中进行工作.比如在修改某个view的显示时, 调用invalidate()才 ...
- WPF 自定义绕圈进度条
在设计界面时,有时会遇到进度条,本次讲解如何设计自定义的绕圈进度条,直接上代码: 1.控件界面 <UserControl x:Class="ProgressBarControl&quo ...
- android 开发-自定义多节点进度条显示
看效果图: 里面的线段颜色和节点图标都是可以自定义的. main.xml <RelativeLayout xmlns:android="http://schemas.android.c ...
- Android 自定义 View 圆形进度条总结
Android 自定义圆形进度条总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 微信公众号:牙锅子 源码:CircleProgress 文中如有纰漏,欢迎大家留言指出. 最近 ...
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar
一.自定义MenuItem的视图 custom_view.xml (就是一个单选按钮) <?xml version="1.0" encoding="u ...
- Android 自定义圆形旋转进度条,仿微博头像加载效果
微博 App 的用户头像有一个圆形旋转进度条的加载效果,看上去效果非常不错,如图所示: 据说 Instagram 也采用了这种效果.最近抽空研究了一下,最后实现的效果是这样: 基本上能模拟出个大概,代 ...
随机推荐
- 【转】delphi Format格式化函数
转自:http://www.cnblogs.com/mumble/archive/2011/05/25/2056462.html Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助 ...
- HUD 1171 Big Event in HDU(01背包)
Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...
- git在webstorm中的使用
打开webstorm新建项目,这里新建的项目名称我起为lianxi 打开设置选项里的插件栏 搜索gitignore,并安装,我这里已安装,所以显示X,没有安装的会显示一个绿色的下载箭头.安装完后需要重 ...
- 解决 git extensions 每次提交需要输入用户名和密码
打开git bash 输入用户名和密码 git config --global user.name "username" git config --global user.emai ...
- crontab 的例子
0 5 * * * python /home/iscas/xiujinnews/wangyi.py >>/home/iscas/xiujinnews/l og/wangyi.log 2&g ...
- java学习 (2)xml操作 SAX(增、删、改、查)
sax是事件驱动的,sax是一种推模式 SAX常用事件: startDocument()----文档开始事件 startElement()-----元素开始事件 charElement()----文本 ...
- python 基础学习3-函数
1. 函数参数-默认参数 python函数也可以跟C语言一样,在函数的形参中设定默认值. >>> def test(flag, port = 8080) ... print port ...
- 扣出的图片无法调整大小 photoshop mac版本
- C# lesson1
一.C#和.net平台 .net是一个软件,一个平台(一般在windows自带 或者在vs里面已经有了) C#是一门运行在.net平台上的语言,需要编译:C#经过.net framework里面的编译 ...
- C#字符串常见操作总结
string类常用的方法和总结小记