public class MyView extends View { private Paint daoPaint; private Paint textPaint; private int myColor; private int textSize;// private int duraion;//毫秒值 private String text; private int current; private boolean isStart; public MyView(Context context) { super(context); init(); } private void init() { myColor = Color.WHITE; duraion = 500; textSize = 40; daoPaint = new Paint(); textPaint = new Paint(); text = ""; current = 0; isStart = false; } public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); float mWidth = getWidth(); float mHeight = getHeight(); daoPaint.setStrokeCap(Paint.Cap.ROUND); daoPaint.setStyle(Paint.Style.FILL); daoPaint.setColor(Color.WHITE); daoPaint.setStrokeWidth(3); textPaint.setTextSize(textSize); textPaint.setColor(myColor); textPaint.setStyle(Paint.Style.STROKE); textPaint.setAntiAlias(true); textPaint.setTextAlign(Paint.Align.LEFT); canvas.drawText(text, 10, mHeight / 2, textPaint); Paint.FontMetrics fm = textPaint.getFontMetrics(); float textHeight = fm.bottom - fm.top; canvas.clipRect(0, 0, mWidth, mHeight);//截取 for (int i = 0; i < current % 4; i++) { //点的位置,间隔 canvas.drawCircle(mWidth /3*2 -10 + (textSize - 20) * i, mHeight / 2, 5, daoPaint); } } public void setMyColor(int myColor) { this.myColor = myColor; } public void setTextSize(int textSize) { this.textSize = textSize; } public void setDuraion(int duraion) { this.duraion = duraion; } public void setText(String text) { this.text = text; } private Runnable run = new Runnable() { @Override public void run() { if (isStart) { current++; MyView.this.invalidate(); handler.postDelayed(run, duraion); } else { isStart = false; current = 0; MyView.this.invalidate(); } } }; private Handler handler = new Handler(); public void start() { //执行一次 if (isStart){ return; } isStart = true; handler.postDelayed(run, 100); } public void stop() { isStart = false; handler.post(run); }
自定义View 实现Loading...(后面的点点点循环出现. .. ..)
最新推荐文章于 2024-04-27 12:42:48 发布