Android TextView字幕效果实例
作者:whsnow 发布时间:2022-03-18 14:55:13
标签:Android,TextView,字幕
一、效果图
二、代码
public class TextSubView extends TextView {
private TextPaint mPaint;
public TextSubView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new TextPaint(getPaint());
mPaint.setStyle(TextPaint.Style.STROKE);
mPaint.setShadowLayer(2.0F, 2.0F, 2.0F, Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.clipRect(0, 0, 55, getBottom());
canvas.drawText(getText().toString(), 0, getBaseline(), mPaint);
canvas.restore();
}
}
代码说明:
关键是setShadowLayer设置阴影效果以及onDraw的四行代码,大家可以搜一下"Android clipRect"了解一下这个函数的作用,注意clipRect与drawText的顺序不要弄反了。


猜你喜欢
- 部分情况下无法通过maven仓库直接下载需要的jar包,只能讲jar包下载至本地来使用,spring boot框架内通过maven加载第三方
- 工具方法:本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据maven 引用jar包版本:<dependency&g
- 前言先简单介绍下我们的使用场景,线上5台Broker节点的kafka承接了所有binlog订阅的数据,用于Flink组件接收数据做数据中台的
- 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可
- 如下所示:String.valueOf((char)10)在导出excel 的时候,如果原始文字中含有 \n 字符, 如果把 \n 替换为&
- 问题原因今天在看集合源码的时候,突然看到接口继承接口,觉得有点差异,以前写代码也就是类继承一个类,实现接口。这样写的多了,突然看到接口继承接
- 抽象工厂模式概述抽象工厂模式(Abastract Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。它提供一个
- 介绍单例模式是软件工程学中最富盛名的设计模式之一。从本质上看,单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口。通常来说
- java spring 通过注解方式创建对象首先 我们要搞清楚一个基础概念什么是注解?注解可以说是代码里的一些特殊标记。格式是 @() 里面
- 本文介绍了C# 用什么方法将BitConverter.ToString产生字符串再转换回去,分享给大家,具体如下:byte[]
- 一、简介SHA-256 是 SHA-2 下细分出的一种算法。截止目前(2023-03)未出现“碰撞”
- 前言:这段时间由于学校实行静态化管理,寝室门和校门都是用了人脸识别的装置,每次经过都会激发我的好奇心,也想自己搞一个人脸识别玩玩,随着开始查
- 1.实现方式说明本文在---- 手写redis @ Cacheable注解支持过期时间设置 的基础之上进行扩展。1.1问题说明
- 多表联合查询resultType的返回值一般数据按参数类型返回<select id="queryCarIdList"
- 本文实例为大家分享了Java文件操作的具体代码,供大家参考,具体内容如下简介本程序主要采用了FileInputStream和FileOutp
- 本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下#include "widget.h"#in
- 工厂方法模式定义: Define an interface for creating an object, but let subclass
- DataGridView 列有三种排序模式。每一列的排序模式是通过该列的 SortMode 属性指定的,该属性可以设置为以下的 DataGr
- 本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下先看看手机自带的长截屏功能: 机型: viv
- 方法参数public String listFireEvent(@Valid FireSearch fireSearch, Ht