android 字体描边实现,android文字描边功能的实现
这里也要简单说一下,这些小模块并不是我原创,也是当时查资料找到的,由于时间比较久,原文链接已经忘记了,所以这里就不列出引用链接了。不过这些代码我都修改、完善过,也添加了一些注释,希望对大家有帮助。
文字描边这个功能挺实用的,如果是单一背景下显示文字,文字描边也可起到装饰作用。如果是复杂背景下,尤其是在不同图片背景下显示文字,因为文字颜色很容易和图片背景相似,这样导致文字看不清楚,用户体验不佳。如果文字经过不同颜色描边后,文字轮廓部分一种颜色,文字内部另一种颜色,因为一般情况下,图片要么和文字轮廓颜色相近,要么和文字内部颜色相近,这样不管图片背景多复杂,文字都会整体显示。
我这里使用的方法是重写TextView方式。
下面是相关代码,整体比较简单,很容易懂。
继承的TextView文字描边类如下:
public class StrokeTextView extends TextView
{
private TextView outlineTextView = null;
public StrokeTextView(Context context)
{
super(context);
outlineTextView = new TextView(context);
init();
}
public StrokeTextView(Context context, AttributeSet attrs)
{
super(context, attrs);
outlineTextView = new TextView(context, attrs);
init();
}
public StrokeTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
outlineTextView = new TextView(context, attrs, defStyle);
init();
}
public void init()
{
TextPaint paint = outlineTextView.getPaint();
paint.setStrokeWidth(3);// 描边宽度
paint.setStyle(Style.STROKE);
outlineTextView.setTextColor(Color.parseColor("#45c01a"));// 描边颜色
outlineTextView.setGravity(getGravity());
}
@Override
public void setLayoutParams (ViewGroup.LayoutParams params)
{
super.setLayoutParams(params);
outlineTextView.setLayoutParams(params);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// 设置轮廓文字
CharSequence outlineText = outlineTextView.getText();
if (outlineText == null || !outlineText.equals(this.getText()))
{
outlineTextView.setText(getText());
postInvalidate();
}
outlineTextView.measure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout (boolean changed, int left, int top, int right, int bottom)
{
super.onLayout(changed, left, top, right, bottom);
outlineTextView.layout(left, top, right, bottom);
}
@Override
protected void onDraw(Canvas canvas)
{
outlineTextView.draw(canvas);
super.onDraw(canvas);
}
}
布局文件如下:
android:id="@+id/test_stroketextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:textSize="25sp"
android:textColor="@color/dark_gray"
android:text="@string/hello_world" />
调用代码如下:
private StrokeTextView test_stroketextview = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
test_stroketextview = (StrokeTextView)findViewById(R.id.test_stroketextview);
test_stroketextview.setText("Hello world!");
}
如果想更改文字描边宽度,或者描边颜色,需要修改上面的StrokeTextView类,当然也可以把这个类设计的更灵活些,这样就可以动态的修改描边宽度或者描边颜色。
以上就是android中文字描边功能的实现实例,希望本文对大家学习android开发有所帮助。请大家多多支持脚本之家。
android 字体描边实现,android文字描边功能的实现相关推荐
- android 字体描边实现,Android自定义View实现简单文字描边功能
本文实例为大家分享了Android实现简单文字描边功能的具体代码,供大家参考,具体内容如下 效果图: 实现代码: package com.example.zhangyu.myview.widget; ...
- android 字体跑马灯,Android文字跑马灯功能的实现(自定义跑马灯控件)
文字跑马灯效果这个功能挺常见的,网上也有很多的介绍,大多是说使用普通的TextView加上几条属性即可实现.不过我在使用时发现并不能实现滚动,可能是因为我的页面中使用到的布局及控件比较复杂,被别的控件 ...
- android 字体跑马灯,Android中使用TextView实现文字跑马灯效果
通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置 android:layout_width="wrap_content" android:layout_height= ...
- java 画图 文字 描边_Android开发:文字描边
1.[代码][Java]代码 package com.example.testproject; import android.content.Context; import android.graph ...
- android 字体大小换算,Android单位换算与UI适配
一,pt.px.屏幕尺寸.分辨率及ppi关系与单位换算 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸. 主要用于印刷和平面设计 1inch = 2.54cm = 72pt px( ...
- android 字体文件压缩,Android创建assets文件夹并使用字体图标(Icon Font)
首先我们要知道如何在AS中新建引用assets文件 1.将项目切换到Project模式 Project.png 2.要注意assets文件夹要跟Java文件在同一目录下,都包含在main的文件下面. ...
- android 字体的切换,Android为整个应用切换第三方字体
一. 1.通过反射来获取系统字体并替换 import java.lang.reflect.Field; import android.content.Context; import android.g ...
- Android 字体没效果,android - 更改选项卡的字体,fontFamily不起作用 - SO中文参考 - www.soinside.com...
我在Xamarin.Forms应用程序(在android上)中为标签定义自定义字体时遇到问题. The Tabbar.xml<?xml version="1.0" encod ...
- android 字体文件压缩,Android 字体使用踩坑指南
Android 字体使用踩坑指南 最近项目改版,根据ui的设计,需要使用到三字体.在使用过程中遇到一些坑,于是有了这个避坑指南! 字体压缩 第一个坑!字体库的体积太大. 字体压缩的前提是要使用的内容是 ...
- Android字体占有内存,Android 字体内存泄露
字体需求 在App开发中,一般都会使用自定义的字体,这些字体美化App的同时,可能还会带来额外的问题,最容易带来的问题就是内存泄露,这里举个实际中遇到的问题作为例子 上面的UI,我们需要在Title. ...
最新文章
- 如何更准确的理解面向对象编程中的对象
- public,private,protected访问权限在Java,C++中的解析
- 【GAN优化】详解SNGAN(频谱归一化GAN)
- html支持移动端吗,bootstrap支持手机端吗?
- php escape undfine,PHP中处理 undefined variable的方法 | Soo Smart!
- javase11源码文件_JavaSE 7,8:确定特定文件系统支持的视图
- java下文_java实现文件下载的两种方式
- oracle+纵向存储,oracle横向纵向求和代码实例
- Spring | SpringMVC
- Map使用put进行数据的添加,对哈希表的三步添加的步骤
- 【南航计算机网络实验】Ping 命令的实现
- python办公自动化——批量向excel填充数据
- 中国与印度软件开发之比较
- U盘修复“系统找不到指定文件”问题解决方法
- WPF Ribbon UI插件式开发框架
- Win 10 开机出现no bootable device
- python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片
- 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
- Linux虚拟机基本操作、Xshell连接、更改IP
- P5723 【深基4.例13】质数口袋
热门文章
- 产品经理必须知道的一些知识:决定价格的四种因素
- spark官方文档_这些未在 Spark SQL 文档中说明的优化措施,你知道吗?
- php教程知识点归纳,PHP知识点小结
- zblog php 侧边栏样式,ZBlogPHP免费主题Blogs如何修改侧边栏搜索框样式?
- 怎么修改_论文查重之后怎么修改?
- linux服务器之间文件复制命令
- 两个向量之间的夹角公式_关于平面向量夹角求参数取值范围的两种基本解法介绍...
- java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...
- 在react中使用svg的各种骚姿势
- Nuxt中如何使用Vuex-Store异步获取数据