1、自定义loadingline动画
/*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/9/6 10*/public class LoadingLine extends View {private Paint paint;private Paint backPaint;private Paint textPaint;private boolean init = false;private ValueAnimator valueAnimator;private float param = 0;private int length = 0;public LoadingLine(Context context) {super(context);init();}public LoadingLine(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {paint = new Paint();paint.setColor(Color.BLUE);paint.setStrokeWidth(25);backPaint = new Paint();backPaint.setColor(Color.RED);backPaint.setStrokeWidth(25);textPaint = new Paint();textPaint.setColor(Color.WHITE);textPaint.setTextSize(10);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (!init) {
// start();init = true;}int width = getWidth();int height = getHeight();canvas.drawLine(0, height / 2, width, height / 2, backPaint);canvas.drawLine(0, height / 2, length * width / 100, height / 2, paint);if (length<100){canvas.drawText(length + "", length * width / 100 - 22, height / 2 + 6, textPaint);}else {canvas.drawText(length + "", length * width / 100 - 42, height / 2 + 6, textPaint);}
// if (valueAnimator.isRunning()) {
// param = (float) valueAnimator.getAnimatedValue();
// setLength((int) param);
// }}/*** 也可在外部手动控制进度条,自行关闭valueAnimator** @param param*/public void setLength(int param) {this.length = param;invalidate();}private void start() {if (valueAnimator == null) {valueAnimator = ValueAnimator.ofFloat(0, 100);valueAnimator.setInterpolator(new LinearInterpolator());valueAnimator.setDuration(6000);valueAnimator.start();} else {valueAnimator.start();}postDelayed(new Runnable() {@Overridepublic void run() {
// start();invalidate();}}, valueAnimator.getDuration());invalidate();}}
2、activity调用
布局文件
<com.administrator.tests.LoadingLineandroid:id="@+id/myloadline"android:layout_width="match_parent"android:layout_height="5dp" />
初始化
private boolean running;private LoadingLine loadingLine;int i = 0;static final int REFRESH_COMPLETE = 0X1112;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case REFRESH_COMPLETE:if (i==100){running=false;}Log.i("lgq","...===="+i);loadingLine.setLength(i++);//主要加载进度方法
//todo...break;}}};
线程加载进度
loadingLine =(LoadingLine)findViewById(R.id.myloadline);new Thread() {@Overridepublic void run() {super.run();running = true;while (running) {mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 0);try {sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}
}.start();
添加圆弧框
<RelativeLayoutandroid:id="@+id/loadre"android:layout_width="280pt"android:layout_height="90pt"android:layout_marginTop="50pt"android:visibility="gone"android:layout_alignParentRight="true"><cn.dlc.bangbang.electricbicycle.util.views.LoadingLineandroid:id="@+id/myloadline2"android:layout_width="match_parent"android:layout_marginLeft="8pt"android:layout_marginRight="18pt"android:layout_centerVertical="true"android:layout_height="wrap_content"></cn.dlc.bangbang.electricbicycle.util.views.LoadingLine><LinearLayoutandroid:layout_width="match_parent"android:layout_height="45pt"android:layout_centerVertical="true"android:layout_marginRight="10pt"android:background="@drawable/load_topbg"></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载中"android:textColor="@color/colorPrimary"android:textSize="@dimen/size_12pt"android:layout_alignParentBottom="true"android:layout_marginRight="10pt"android:layout_centerHorizontal="true"></TextView></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="@color/transparent" /><corners android:radius="30dp" /><strokeandroid:width="8pt"android:color="@color/color_DDD" /><paddingandroid:bottom="0dp"android:left="0dp"android:right="0dp"android:top="0dp" /></shape>
demo连接: Android开发进度条demo-Android文档类资源-CSDN下载