您的位置:首页 > 其它

自定义下载圆形按钮

2016-07-19 14:09 417 查看
先看效果图:



下面直接上代码:

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: