Android UI

  • 绘制
    • 自定义绘制主要是重写绘制方法,其中主要的方法就是onDraw()
    • 绘制的关键是Canvas的使用
      • Canvas的绘制类方法:drawxxx()(关键参数Paint)
      • Canvas辅助类方法:范围裁剪和几何变换
    • 可以使用不同的绘制方法来控制遮盖关系

 

    • 自定义绘制的四个级别
      1. Canvas的drawxxx()方法及paint最常见的使用
      2. paint的完全攻略
        1. 拐角要什么形状
        2. 要不要开双线性过滤
        3. 加不加特效
    1. 3.canvas的范围裁剪
    2. 绘制顺序
    3. 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);
          }
      }
      

        

         
  • 布局
  • 触摸反馈

posted on 2018-09-04 09:36  endian11  阅读(160)  评论(0)    收藏  举报

导航