zoukankan      html  css  js  c++  java
  • 进度条加载

    package com.baway.a1509a_view.widget;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.RectF;
    import android.support.annotation.Nullable;
    import android.util.AttributeSet;
    import android.view.View;
    
    import com.baway.a1509a_view.R;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    /**
     * 
     */
    
    public class MyPb extends View {
    
        private float cx;
        private float cy;
        private float radius;
        private Paint paint;
        private int sweepAngle;
        private int color;
    
        public MyPb(Context context) {
            this(context, null);
        }
    
        public MyPb(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            //获取自定义的属性
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyPb);
            //获取颜色
            color = a.getColor(R.styleable.MyPb_circle_color, Color.BLACK);
            radius = a.getDimension(R.styleable.MyPb_circle_radius, 20);
            cx = a.getDimension(R.styleable.MyPb_circle_x, 100);
            cy = a.getDimension(R.styleable.MyPb_circle_y, 100);
            //需要回收
            a.recycle();
    
            paint = new Paint();
            paint.setAntiAlias(true);
    
            paint.setStyle(Paint.Style.STROKE);
    
    
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                               @Override
                               public void run() {
                                   if (sweepAngle > 360) {
                                       return;
                                   }
                                   sweepAngle += 1;
                                   //刷新View
                                   //这个方法只能在主线程刷新UI
    //                        invalidate();
                                   //这个方法,也是刷新UI,并且可以在子线程刷新
                                   postInvalidate();
    
                               }
                           }
                    , 1000, 20);
    
    
        }
    
    
        @Override
        protected void onDraw(Canvas canvas) {
            paint.setColor(color);
            paint.setStrokeWidth(5);
            canvas.drawCircle(cx, cy, radius, paint);
    
            paint.setColor(Color.RED);
            RectF rectF = new RectF(cx - radius, cy - radius, cx + radius, cy + radius);
            canvas.drawArc(rectF, -90, sweepAngle, false, paint);
    
            //绘制文字
            int progress = (int) (sweepAngle / 360f * 100);
    
            paint.setStrokeWidth(0);
            paint.setColor(Color.BLACK);
            paint.setTextSize(15);
            canvas.drawText(progress + "%", cx - 5, cy, paint);
        }
    
    
    }
    

      

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <declare-styleable name="MyPb">
    <attr name="circle_color" format="color"></attr>
    <attr name="circle_radius" format="dimension"></attr>
    <attr name="circle_x" format="dimension"></attr>
    <attr name="circle_y" format="dimension"></attr>
    </declare-styleable>
    </resources>

  • 相关阅读:
    hdu 4027 Can you answer these queries?
    hdu 4041 Eliminate Witches!
    hdu 4036 Rolling Hongshu
    pku 2828 Buy Tickets
    hdu 4016 Magic Bitwise And Operation
    pku2886 Who Gets the Most Candies?(线段树+反素数打表)
    hdu 4039 The Social Network
    hdu 4023 Game
    苹果官方指南:Cocoa框架(2)(非原创)
    cocos2d 中 CCNode and CCAction
  • 原文地址:https://www.cnblogs.com/wsq110/p/7791495.html
Copyright © 2011-2022 走看看