自定义下载圆形按钮
2016-07-19 14:09
417 查看
先看效果图:
下面直接上代码:
xml文件
下面直接上代码:
public class CircleProgressView extends LinearLayout { private ImageView mIcon; private TextView mNote; private boolean mProgressEnable;//是否绘制背景 private long mMax = 100;//默认100 private long mProgress; public CircleProgressView(Context context) { this(context, null); } public CircleProgressView(Context context, AttributeSet attrs) { super(context, attrs); View view = View.inflate(context, R.layout.inflate_circleprogressview, this); mIcon = (ImageView) view.findViewById(R.id.circleProgressView_iv_icon); mNote = (TextView) view.findViewById(R.id.circleProgressView_tv_note); } /** * 设置图片 * * @param resId */ public void setIcon(int resId) { mIcon.setImageResource(resId); } public void setNote(String note) { mNote.setTextColor(UIUtils.getColor(R.color.app_detail_safe_normal)); mNote.setText(note); } /** * 设置是否允许进度 * * @param mProgressEnable */ public void setProgressEnable(boolean mProgressEnable) { this.mProgressEnable = mProgressEnable; } /** * 设置最大值 * * @param mMax */ public void setMax(long mMax) { this.mMax = mMax; } /** * 设置当前进度 * * @param mProgress */ public void setProgress(long mProgress) { this.mProgress = mProgress; invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas);// 绘制具体的内容(图片和文字) if (mProgressEnable) { //绘制 RectF oval = new RectF(mIcon.getLeft(), mIcon.getTop(), mIcon.getRight(), mIcon.getBottom()); float startAngle = -90;//起始弧度。从正上方开始 float sweepAngle = mProgress * 360.f / mMax;//扫过的弧度 boolean userCenter = false;//是否保留俩边 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND);//链接处圆形 paint.setStrokeWidth(UIUtils.dip2px(3)); canvas.drawArc(oval, startAngle, sweepAngle, userCenter, paint); } } }
xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="70dp" android:layout_height="match_parent" android:layout_alignParentRight="true" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/circleProgressView_iv_icon" android:layout_width="32dp" android:layout_height="32dp" android:src="@drawable/ic_download" /> <TextView android:id="@+id/circleProgressView_tv_note" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="随意" /> </LinearLayout>
相关文章推荐
- Java Web开发框架对比—Part1—快速原型
- ARM的栈帧
- 找出一个数组中重复次数最多的数
- Java hashCode() 方法深入理解
- Jenkins + Saucelabs+ Curl上传被测app 到saucelabs storage
- JNI接口函数
- Unity3D中常用的数据结构总结与分
- oc中常用的占位符
- TDK 磁环
- ADB常用命令汇总
- 用java打开文件夹
- Linux 下复制(cp)目录时排除一个或者多个目录的方法
- fiddler 使用方法汇总
- 关于unicorn 的 worker_processes
- centos之lnmp
- centos7配置ip地址
- Android应用被强制停止后无法接受广播解决方案
- h5新标签和css3动画制作一个鼠标悬停的动画效果
- Redis cluster搭建
- Maven 的安装配置 (eclipse)