Android UI
- 绘制
- 自定义绘制主要是重写绘制方法,其中主要的方法就是onDraw()
- 绘制的关键是Canvas的使用
- Canvas的绘制类方法:drawxxx()(关键参数Paint)
- Canvas辅助类方法:范围裁剪和几何变换
- 可以使用不同的绘制方法来控制遮盖关系
-
- 自定义绘制的四个级别
- Canvas的drawxxx()方法及paint最常见的使用
- paint的完全攻略
- 拐角要什么形状
- 要不要开双线性过滤
- 加不加特效
- 自定义绘制的四个级别
- 3.canvas的范围裁剪
- 绘制顺序
-
package com.safeluck.demo.demo.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; /** * Demo * Created by lzw on 2018/9/3. 15:09:45 * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class PractiseView1 extends View { Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private float interval = 25; private float perwidth = 80; public PractiseView1(Context context) { super(context); } public PractiseView1(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public PractiseView1(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); RectF rectF1 = new RectF(100+1*interval+0*perwidth,600-5,100+perwidth*1+interval*1,600); RectF rectF2 = new RectF(100+2*interval+1*perwidth,600-30,100+perwidth*2+interval*2,600); RectF rectF3 = new RectF(100+3*interval+2*perwidth,600-30,100+perwidth*3+interval*3,600); RectF rectF4 = new RectF(100+4*interval+3*perwidth,600-200,100+perwidth*4+interval*4,600); RectF rectF5 = new RectF(100+5*interval+4*perwidth,600-50,100+perwidth*5+interval*5,600); RectF rectF6 = new RectF(100+6*interval+5*perwidth,600-90,100+perwidth*6+interval*6,600); RectF rectF7 = new RectF(100+7*interval+6*perwidth,600-160,100+perwidth*7+interval*7,600); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.FILL); canvas.drawRect(rectF1,paint); canvas.drawRect(rectF2,paint); canvas.drawRect(rectF3,paint); canvas.drawRect(rectF4,paint); canvas.drawRect(rectF5,paint); canvas.drawRect(rectF6,paint); canvas.drawRect(rectF7,paint); paint.setColor(Color.RED); canvas.drawLines(new float[]{100,20,100,600,100,600,1000,600},paint); paint.setTextSize(18); canvas.drawText("Froyo",100+1*interval+0.5f*perwidth,620,paint); canvas.drawText("GB",100+2*interval+1.5f*perwidth,620,paint); canvas.drawText("ICS",100+3*interval+2.5f*perwidth,620,paint); canvas.drawText("JB",100+4*interval+3.5f*perwidth,620,paint); canvas.drawText("KitKat",100+5*interval+4.5f*perwidth,620,paint); canvas.drawText("L",100+6*interval+5.5f*perwidth,620,paint); canvas.drawText("M",100+7*interval+6.5f*perwidth,620,paint); paint.setTextSize(24); paint.setColor(Color.BLACK); canvas.drawText("直方图",100+7*interval+3.5f*perwidth,680,paint); } }
- 布局
- 触摸反馈
Dana.Lee
To:Dana_Lee1016@126.com
浙公网安备 33010602011771号