#2020征文-TV#「续3.1.1 文本组件」不需要背景图,自定义绘制会 原创 精华
上节我们对Text组件有了详细的认知,我们可以通过设置Text组件的各类属性来让Text组件美观起来,但是我们仅仅能设置背景、字体大小、字体大小自适应、内容折行、外边距、内边距等。很多时候我们想给字体设置边框、圆角、阴影等等特殊的效果,但是在属性中没有特定的属性可以完成这件事。当然我们可以给Text组件设置背景图片,这样也可以达到我们的预期效果,但是如果整个APP中图片比较多会增加我们安装包的体积,还会在各种手机的适配上出现不可预知的问题。
官方团队提供了一个可以绘制带有颜色、渐变、边框,用于视图背景的,及设置各种形状的类—ShapeElement。
ShapeElement类源码
ShapeElement类是Element的子类,Element类有多个扩展类,这里就不详细说明了,后面我们在需要的时候再扩展讲解。目前Java API中提供了多个常量值,两个构造函数,以及多个绘图方法。
我们先来了解一下能够设置哪些形状?
ShapeElement类提供了设置矩形、椭圆形、直线、圆弧和路径(以直线段、二次曲线和三次曲线的几何组合表示多轮廓路径)。本节仅对前三个几何图形做介绍,后两个后面小节会详细介绍。
ShapeElement实例应用
上面我们将常用的源码做了简单分析,接下来我们将以实操为主,能够熟练掌握ShapeElement的应用。
我们先来看看上面的UI界面,上面有三种自定义文本显示,矩形、椭圆形、直线。而OHOS还提供了圆弧和基于路径的多形状图。在矩形中,我们分别实现了默认的矩形背景,四角相同的圆角矩形背景,四角不同的圆角矩形背景,实线边框的矩形背景,虚线边框的矩形背景,椭圆背景,圆形背景,及直线背景。
首先我们先了解一下,我们为何使用这种类型的背景。
1、给app瘦身,可以替代纯色和渐变色的组件背景
2、编写一个矩形、圆、椭圆,便于维护,只需要改动少量代码即可实现效果
3、节省内存
这些设置背景的图形和背景色在ShapeElement类中,ShapeElement类是Element类的子类,该类用于实现带有渐变效果的图形化视图背景。其提供了矩形、椭圆形、直线、圆弧和基于路径的多形状图,本节我们先来对矩形、椭圆形和直线做示例介绍,后两种我们在后续开专门的小节做详细介绍。
矩形
矩形是常见的视图背景,我们可以设置默认的矩形、带圆角的矩形、带边框的矩形。
OHOS也提供了加载XML资源文件的方法,在graphic文件夹下可以创建xml类型的可绘制资源,如SVG可缩放矢量图形文件、基本的几何图形(如矩形、圆形、线等)shape资源,下面是shape资源XML格式:
其中ohos:shape是指定几何图形,rectangle为矩形样式。shape的属性有solid(背景色)、corners表示圆角、gradient表示渐变、stroke表示边框。
椭圆形
椭圆一般我们不常用,但是圆形我们是常用的,比如默认头像,我们使用纯色背景来实现。
直线
直线我们只需要了解即可,这个实际项目中没有多大意义。
本小节我们对ShapeElement类有了一些具体的了解,在后面的组件中将不在详细介绍,可以根据本节内容自定义不同样式的组件。对于ShapeElement类中的另外两个绘制几何图形的方法,我将在后面的小节中单独介绍。
XML文件方式设置我在文中简单的做了介绍,如果直接在布局XML中引用graphic文件下的资源,可以设置组件的ohos:background_element属性。
下篇内容预告:
Image组件源码
Image实例应用
Image组件和Text组件组合实例
厉害了,老师写文章是真的效率。
如果要动态设置背景图片怎么设置。目前只会在xml里设置ohos:background_element才能引用资源文件,动态设置不知道方法。
你可以先预定义多个xml背景图片样式,然后在Java中使用下面方式进行动态引入
这个只能引用Graphic,media会报错呀
期待类似基础组件详细分享的持续更新~~666~~
media用PixelMapElement
老师好,shape阴影在鸿蒙开发中怎么写呢?期待回复,谢谢
使用JS开发的话可以通过设置CSS样式来控制。
如果使用Java开发,可以通过drawToCanvas方法绘制一个。