Android进阶之路 - 字体阴影、文字阴影

news/2024/11/19 21:18:55/

最近几个月都挺忙,忙着工作,忙着成长…

一直以来我认为在开发中首当其冲的肯定是需求、功能,然后才是UI细节;所以我自己一般不太会去深究一些看不明显的UI,不过这俩日同事提醒我文字有阴影效果,细看之下果然UI设计图中有进行标注

嗯… 对于没接触过的技术,如果开发周期很充裕的话,我还是很愿意去研究,但是如果开发周期很短的话,我就比较反感未知的部分了… 不过有点尴尬的是 文字阴影效果 Android早就已经帮写好了,我们仅需调用几个属性即可…

      • 前置了解
      • 阴影实现
      • 阴影测试
        • 垂直偏移(shadowDx)
        • 水平偏移(shadowDy)
        • 阴影范围(shadowRadius)
      • 源码兴趣

前置了解

看一下UI提供的设计图(如果设计标注中没有标明阴影的偏移量、色值等数据可自行找UI要数值

在这里插入图片描述

有的人可能看到有提供Android的伪代码,其实伪代码没有阴影的设置部分

在这里插入图片描述


阴影实现

Android很早以前就提供了字体阴影的设置方式,关于如何设置文字的阴影效果,主要用到了以下四种阴影属性

  • android:shadowColor 阴影颜色
  • android:shadowDx 阴影水平偏移量
  • android:shadowDy 阴影垂直偏移量
  • android:shadowRadius 阴影范围

实现效果
在这里插入图片描述

实现布局

Tip:在设计标注中一般都是采用的px(像素),可自行设置px或dp看看效果,哪个合适选哪个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:orientation="vertical"android:gravity="center_horizontal"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:text="正常字体" /><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="2"android:shadowRadius="4"android:text="阴影字体" />
</LinearLayout>

Look Here:如果仅是为了实现字体阴影的效果,那么看到这里就够了,有兴趣、有时间的可以继续往下看~


如果字体阴影场景比较多的话,也可以在 values - style.xml 写个Style

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="shadowStyle"><item name="android:shadowColor">#687BF3</item><item name="android:shadowRadius">4</item><item name="android:shadowDx">0</item><item name="android:shadowDy">2</item></style>
</resources>

引用方式

    <TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"style="@style/shadowStyle"android:text="阴影字体" />

阴影测试

经测试,得结果:水平偏移默认向右,垂直偏移默认向下;偏移值可为正负,不同值显示偏移方向所有不同

垂直偏移(shadowDx)

在这里插入图片描述

xml 片段

    <TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="22"android:shadowRadius="1"android:text="阴影字体" />

经过测试,可设垂直偏移负值,显示向上

在这里插入图片描述

xml 片段

    <TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="-22"android:shadowRadius="1"android:text="阴影字体" />

水平偏移(shadowDy)

在这里插入图片描述

xml 片段

    <TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="22"android:shadowDy="0"android:shadowRadius="1"android:text="阴影字体" />

经过测试,可设水平偏移负值,显示向左

在这里插入图片描述

xml 片段

    <TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="-22"android:shadowDy="0"android:shadowRadius="1"android:text="阴影字体" />

阴影范围(shadowRadius)

经测试,得结果:随着 shadowRadius 设置的越大,阴影效果也越大,但是也会越模糊

Tip:shadowRadius:0 - 1 - 5 - 50 - 500 显示效果

在这里插入图片描述

xml 片段

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:text="正常字体" /><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="22"android:shadowRadius="1"android:text="阴影字体" /><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="22"android:shadowRadius="5"android:text="阴影字体" /><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="22"android:shadowRadius="52"android:text="阴影字体" /><TextViewandroid:layout_width="100dp"android:layout_height="50dp"android:gravity="center"android:shadowColor="#687BF3"android:shadowDx="0"android:shadowDy="22"android:shadowRadius="522"android:text="阴影字体" />
</LinearLayout>

源码兴趣

TextView的自定义属性开始追溯

在这里插入图片描述

values 自定义属性

在这里插入图片描述

TextViewsetShadowLayer 表示将绘制一个阴影,阴影部分不参与交互;同事说明了用到的自定义属性

在这里插入图片描述

PaintsetShadowLayer 表示在主层之下将绘制一个阴影层,范围为0就会移除该阴影层

在这里插入图片描述

PaintsetShadowLayer具体实现

在这里插入图片描述

nSetShadowLayer 好像是调C的方法,具体就不往下深究了

在这里插入图片描述


http://www.ppmy.cn/news/124870.html

相关文章

VCD-影音光碟

VCD&#xff0c;影音光碟&#xff08;Video Compact Disc&#xff1b;VCD&#xff09;&#xff0c;是一种在光碟&#xff08;Compact Disk&#xff09;上存储视频信息的标准。VCD可以在个人电脑或VCD播放器以及大部分DVD播放器中播放。VCD标准由索尼、飞利浦、JVC、松下等电器生…

音箱电路原理图

现如今音视频方面的发展对生活起到了非常重要的作用&#xff0c;特别是智能硬件行业中&#xff0c;音视频以及连接技术&#xff08;WIFI&#xff0c;蓝牙等&#xff09;都尤为重要。今天就讲一下音箱的原理。音箱一般的作用就是对声音信号的外放&#xff0c;通常有播放器过来的…

电子元器件常用品牌汇总(持续更新)

电阻&#xff1a;Yageo国巨、Fenghua风华、Rohm罗姆、TDK、Samsung三星、Uniohm厚声、Walsin华新科、Ralec旺诠、KOA兴亚、Panasonic松下、AVX、TMTEC泰铭、Kyocera京瓷、PHYCOM飞元。 电容&#xff1a;Yageo国巨、Fenghua风华、Murata村田、TDK、Samsung三星、Eyang宇阳、Tai…

TNG AV-298 功放修理

买了新接头 安装上了&#xff0c;发现有右声道无声。 拆开修理功放。就不说修理的细节了。我是外行。哈 总之修好了&#xff0c;我的功放&#xff1a; PS.网友拆解的图&#xff1a; http://bbs.mydigit.cn/read.php?tid332851

io.netty项目UDP实现

要在Netty项目中实现UDP服务端&#xff0c;可以按照以下步骤进行操作&#xff1a; 添加Netty依赖&#xff1a;在项目的构建文件&#xff08;如Maven的pom.xml&#xff09;中添加Netty的依赖项&#xff0c;以便引入Netty库。 创建引导类&#xff08;Bootstrap&#xff09;&…

摄像机无线图传、摄像机无线视频传输、摄像机wifi视频传输

技术说明&#xff1a; 摄像机进行H265编码&#xff0c;接着摄像机将编码后的H265码流通过wifi发送给接收端&#xff08;解码器&#xff09;&#xff0c;接收端&#xff08;解码器&#xff09;收到H256码流后进行解码并通过HDMI接口输出显示。 摄像机为AP&#xff0c;接收端…

国产8K摄像机记录中国航展的飞速发展

总有一种声音&#xff0c;让人心生万千豪迈。总有一种影像&#xff0c;让人内心无比激荡。2022年11月8日-13日&#xff0c;第14届中国国际航空航天博览会在广东珠海盛大举办&#xff0c;国产博冠8K全画幅摄像机B1亮相活动现场&#xff0c;一幕幕震撼画面将在8K里留存。 60多年…

高速工业相机应用领域

高速工业相机可以应用于&#xff1a; 军事领域&#xff1a;火药爆炸分析&#xff0c;弹道分析&#xff0c;子弹发射&#xff0c;火箭发射&#xff0c;烟火分析&#xff0c;防御装置设计&#xff0c;撞击分析&#xff0c;武器机械运动分析&#xff0c;飞行分析&#xff0c;穿甲…