自定义View 绘画,Sharder 瓦片模式

编程入门 行业动态 更新时间:2024-10-10 00:26:47

自定义View 绘画,Sharder <a href=https://www.elefans.com/category/jswz/34/1725142.html style=瓦片模式"/>

自定义View 绘画,Sharder 瓦片模式

自定义View

① 是什么 ?

    就是自己写的一个View,可通过绘制,继承,组合 三种方式

② 怎么用

    首先写一个类继承自View,继承父类的三个构造方法在mxl 文件中引入这个类<com.example.liyang.customview.CustomViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#528b1d"/>

自定义View 画图 设,P*(色,心,粗),布色,图,p

自定义View 类中 继承 View // view : 透明的
重写 构造方法,我们首先要 构造方法中递归调用,在第一个构造方法中,调用第二个构造方法,
再在第二个构造方法中调用第三个构造方法 ,以便于在第三个 构造方法中初始化Paint

    准备工作 :让前两个构造函数调用 第三个 构造函数在第三个构造函数中初始化 画笔 Paintpaint = new Paint();1在 onDraw(Canvas canvas)先将画布置色 ,不然之前色易有残余       canvas.drawColor(Color.White);2 paint 可以设置颜色,画笔粗细,样式(实心,空心)paint.setStrokeWidth(10);paint.setColor(Color.BLACK);   paint.setStyle(Paint.Style.STROKE);// 或者 FILL 实心3.我们可以 利用 画笔 和 画布 去 进行绘画 (圆形,矩形,椭圆形..)canvas.drawPoint(100,100,paint);canvas.drawLine(200,200,400,400,paint);canvas.drawRect(300,300,600,700,paint);canvas.drawCircle(500,500,300,paint);canvas.drawArc(new RectF(200,500,600,900),0,90,true,paint);绘制多边形:三角形,正五星..绘制 多边形, 在绘制多边① 构建Path 对象利用它的服务② 利用 path moveTo() ; 与 lineTo() 方法进行绘制 ③ canvas.drawPath(path,paint);  // 画一下即可当然我们还可以使用 弧形去连接 两个点 path.arcTo(new RectF(100,100,200,200),0,90,true)最后我们还可以 画文字paint.setTextSize();canvas.drawText("",100,,100,paint);我们还可以得到 画笔 所划线的 顶部底部等,我们可以通过 Paint.FontMetrics metrics = paint.getFontMetrics(); 的属性进行文字的书写top bottom 基准线 leading 以基准线 为 y值坐标 写的这个文字 bttom 其实就是一个偏移量 实现文字恰好位于杠上:canvas.drawColor(Color.WHITE);Paint.FontMetrics metrics = paint.getFontMetrics();paint.setStyle(Paint.Style.STROKE);canvas.drawRect(100,100,1000,300,paint);paint.setTextSize(50);canvas.drawText("测试下对齐了吗",100,100-metrics.bottom,paint);常用字体属性

载图,set pro post rst

载入图片

注意载入图片属于耗时操作 不能写在 onDraw()方法里

        BitmapFactory.deodeResource(context.getResource(),R.mipmap...);canvas.drawBitmap(bitmap,100,100,paint);

设置矩阵
Matric matrix = new Matrix(); // 12 种属性

![这里写图片描述]()

通常我们画出来的圆 周边带有 锯齿 ,我们可以开启 抗锯齿,让他们模糊

        paint.setAntiAlias(true);

线性渐变 三种模式渐变 cmr

    LinearGradient linearGradient = new LinearGradient(100, 100, 500, 100, Color.RED, Color.BLUE, Shader.TileMode.CLAMP);paint.setShader(linearGradient);

sharder 瓦片模式

彩虹的多彩变化
彩虹色的属性是设置给 画笔的
paint.setSharder(线性,扇形(不存在某个点不在瓦片范围之内),环形(圆))

头像圆形 用sharder 来做 画布移动 与矩阵恢复

有两种 瓦片模式 ,水平 和 垂直 方向上 都有可能超过 图片的范围SweepGradient sweepGradient = new SweepGradient(getWidth() / 2, getHeight() / 2,new int[]{0xffff0000,0xffff8800,0xffffff00,0xff00ff00,0xff00ffff,0xff0000ff,0xffff00ff},new float[]{0,1.0f/6,2.0f/6,3.0f/6,4.0f/6,5.0f/6,1});paint.setShader(sweepGradient);BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);paint.setShader(bitmapShader);int cir = bitmap.getWidth() / 2;canvas.save();//移动我们的画布 达到 头像移动的目的 那要是 多个头像呢canvas.translate(500-cir,500-cir);paint.setAntiAlias(true);canvas.drawCircle(cir,cir,cir,paint);//恢复上一次矩阵canvas.restore();canvas.drawCircle(cir,cir,cir,paint);

更多推荐

自定义View 绘画,Sharder 瓦片模式

本文发布于:2024-03-14 22:10:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737447.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:瓦片   自定义   模式   Sharder   View

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!