zoukankan      html  css  js  c++  java
  • android 开发 View _4_ 我的简单自定义ViewDemo

    效果图:

    代码:

    package com.example.lenovo.mydemo.myViewDemo;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Typeface;
    import android.support.annotation.Nullable;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.View;
    
    import com.example.lenovo.mydemo.R;
    
    /**
     * Created by lenovo on 2018/7/2.
     */
    
    public class MyView_1 extends View {
        private final String TAG = "MyView_1";
        private float radius;
        private int color;
        private Paint mPaint;
    
        public MyView_1(Context context) {
            super(context);
        }
    
        public MyView_1(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MyView_1(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
    
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
    
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Log.e(TAG, "onDraw_radius:"+radius);
            /*
            用多线段画矩形(也可以直接drawRect画矩形)
             */
            //创建画笔 关于画笔可以也可以不创建多个画笔使用paint1.reset();来重置画笔
            Paint paint1 = new Paint();
    
            //给画笔添加颜色
            paint1.setColor(Color.RED);
            //设置画笔宽度
            paint1.setStrokeWidth(10);
            //设置画笔转角(两个线相交的点)风格
            paint1.setStrokeJoin(Paint.Join.MITER);
            //设置抗锯齿
            paint1.setAntiAlias(true);
            float[] f = new float[]{
                    0,0,//第一条线的起始点
                    getWidth(),0,//第一条线的终点
                    getWidth(),0,//第二条线的起始点
                    getWidth(),getHeight(),//第二条线的终点
                    getWidth(),getHeight(),//同上
                    0,getHeight(),
                    0,getHeight(),
                    0,0};
            //在画布上画多线段,添加坐标和画笔
            canvas.drawLines(f,paint1);
    
    
            /*
            画圆
             */
            //创建画笔
            Paint paint2 = new Paint();
            //设置画笔颜色
            paint2.setColor(getResources().getColor(R.color.colorPrimary));
            //设置画笔宽度
            paint2.setStrokeWidth(10);
            //抗齿距
            paint2.setAntiAlias(true);
            //画空心圆 如果不设置默认是实心圆 另外2个参数是 FILL 和 FILL_AND_STROKE 分别都实心圆
            paint2.setStyle(Paint.Style.STROKE);
            //画圆形   传入X坐标Y坐标(2个坐标合起来做中心点),然后是半径200加画笔
            canvas.drawCircle(getWidth()/2,getHeight()/2,200,paint2);
            /*
            画文字
             */
            Paint paint3 = new Paint();
            /*
            -----------  字体类型  -------------
            * Typeface.DEFAULT //常规字体类型
    
            * Typeface.DEFAULT_BOLD //黑体字体类型
    
            * Typeface.MONOSPACE //等宽字体类型
    
            * Typeface.SANS_SERIF //sans serif字体类型
    
             * Typeface.SERIF //serif字体类型
             ------------ 字体风格 ---------------
             *  * Typeface.BOLD //粗体
    
             * Typeface.BOLD_ITALIC //粗斜体
    
             * Typeface.ITALIC //斜体
    
             * Typeface.NORMAL //常规
             */
            Typeface typeface = Typeface.create(Typeface.DEFAULT,Typeface.NORMAL);
            //导入字体类型和风格
            paint3.setTypeface(typeface);
            //设置字体大小
            paint3.setTextSize(50);
            //设置线宽
            paint3.setStrokeWidth(5);
            //设置颜色
            paint3.setColor(Color.RED);
            //设置文字居中
            paint3.setTextAlign(Paint.Align.CENTER);
            canvas.drawText("你好",getWidth()/2,getHeight()/2,paint3);
    
    
    
        }
    }
     


  • 相关阅读:
    PCA 主成分分析实践 plink软件
    c语言中基本数据类型
    c语言中利用itoa函数将整数值以二进制、八进制、十六进制显示
    c语言中以10进制、8进制、16进制显示同一个数字
    c语言中实现文件的复制(文本复制和二进制复制)
    c语言 13-13
    c语言显示文件自身
    LYDSY模拟赛day2 Dash Speed
    LYDSY模拟赛day2 Market
    LYDSY模拟赛day2 Divisors
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/9708602.html
Copyright © 2011-2022 走看看