Generated with sparks and insights from 14 sources

img6

img7

img8

img9

img10

img11

Introduction

  • 在安卓中生成六边形头像可以通过自定义View来实现。

  • 主要步骤包括绘制六边形路径、设置BitmapShader、以及在Canvas上绘制。

  • 可以使用Path类来定义六边形的形状,并使用Paint类来设置绘制属性。

  • BitmapShader可以用于将图片渲染到六边形区域内。

  • 通过重写onDraw方法,可以将六边形路径和图片绘制到Canvas上。

绘制六边形路径 [1]

  • 使用Path类:Path类可以用来定义六边形的形状。

  • 计算六边形顶点:根据六边形的边长计算出每个顶点的坐标。

  • 绘制路径:使用moveTo和lineTo方法依次连接各个顶点,形成六边形。

  • 闭合路径:使用close方法将路径闭合,形成完整的六边形。

img6

img7

设置BitmapShader [1]

  • BitmapShader简介:BitmapShader可以将一个Bitmap作为渲染对象。

  • 初始化BitmapShader:在设置Bitmap的时候初始化BitmapShader。

  • 设置给Paint:将BitmapShader设置给Paint对象,以便在绘制时使用。

  • TileMode设置:可以设置TileMode.CLAMP来控制Bitmap的填充方式。

img6

img7

重写onDraw方法 [2]

  • 重写onDraw:在自定义View中重写onDraw方法。

  • 绘制背景:首先绘制六边形的背景路径。

  • 设置Xfermode:使用PorterDuffXfermode来控制绘制模式。

  • 绘制图片:将Bitmap绘制到六边形路径内。

  • 恢复Xfermode:绘制完成后恢复Xfermode。

img6

img7

img8

自定义View示例 [2]

  • CustomerView类:创建一个继承自View的自定义类。

  • 初始化Paint:在构造方法中初始化Paint对象。

  • 重写onSizeChanged:获取View的宽高。

  • 重写onDraw:绘制六边形路径和图片。

  • 使用BitmapShader:将图片渲染到六边形区域内。

img6

img7

img8

使用Drawable [1]

  • HiveDrawable类:创建一个继承自Drawable的自定义类。

  • 初始化Paint和Path:在构造方法中初始化Paint和Path对象。

  • 设置Bitmap:在设置Bitmap时初始化BitmapShader。

  • 重写draw方法:在draw方法中绘制六边形路径和图片。

  • 设置边界:重写setBounds方法来设置Drawable的边界。

img6

img7

Related Videos

<br><br>

<div class="-md-ext-youtube-widget"> { "title": "\u5982\u4f55\u901a\u8fc7\u526a\u5207\u751f\u6210\u5706\u5f62\u5934\u50cf", "link": "https://www.youtube.com/watch?v=2ZSU-hHFBVg", "channel": { "name": ""}, "published_date": "May 29, 2020", "length": "" }</div>