这里也要简单说一下,这些小模块并不是我原创,也是当时查资料找到的,由于时间比较久,原文链接已经忘记了,所以这里就不列出引用链接了。不过这些代码我都修改、完善过,也添加了一些注释,希望对大家有帮助。

文字描边这个功能挺实用的,如果是单一背景下显示文字,文字描边也可起到装饰作用。如果是复杂背景下,尤其是在不同图片背景下显示文字,因为文字颜色很容易和图片背景相似,这样导致文字看不清楚,用户体验不佳。如果文字经过不同颜色描边后,文字轮廓部分一种颜色,文字内部另一种颜色,因为一般情况下,图片要么和文字轮廓颜色相近,要么和文字内部颜色相近,这样不管图片背景多复杂,文字都会整体显示。

我这里使用的方法是重写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文字描边功能的实现相关推荐

  1. android 字体描边实现,Android自定义View实现简单文字描边功能

    本文实例为大家分享了Android实现简单文字描边功能的具体代码,供大家参考,具体内容如下 效果图: 实现代码: package com.example.zhangyu.myview.widget; ...

  2. android 字体跑马灯,Android文字跑马灯功能的实现(自定义跑马灯控件)

    文字跑马灯效果这个功能挺常见的,网上也有很多的介绍,大多是说使用普通的TextView加上几条属性即可实现.不过我在使用时发现并不能实现滚动,可能是因为我的页面中使用到的布局及控件比较复杂,被别的控件 ...

  3. android 字体跑马灯,Android中使用TextView实现文字跑马灯效果

    通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置 android:layout_width="wrap_content" android:layout_height= ...

  4. java 画图 文字 描边_Android开发:文字描边

    1.[代码][Java]代码 package com.example.testproject; import android.content.Context; import android.graph ...

  5. android 字体大小换算,Android单位换算与UI适配

    一,pt.px.屏幕尺寸.分辨率及ppi关系与单位换算 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸. 主要用于印刷和平面设计 1inch = 2.54cm = 72pt px( ...

  6. android 字体文件压缩,Android创建assets文件夹并使用字体图标(Icon Font)

    首先我们要知道如何在AS中新建引用assets文件 1.将项目切换到Project模式 Project.png 2.要注意assets文件夹要跟Java文件在同一目录下,都包含在main的文件下面. ...

  7. android 字体的切换,Android为整个应用切换第三方字体

    一. 1.通过反射来获取系统字体并替换 import java.lang.reflect.Field; import android.content.Context; import android.g ...

  8. Android 字体没效果,android - 更改选项卡的字体,fontFamily不起作用 - SO中文参考 - www.soinside.com...

    我在Xamarin.Forms应用程序(在android上)中为标签定义自定义字体时遇到问题. The Tabbar.xml<?xml version="1.0" encod ...

  9. android 字体文件压缩,Android 字体使用踩坑指南

    Android 字体使用踩坑指南 最近项目改版,根据ui的设计,需要使用到三字体.在使用过程中遇到一些坑,于是有了这个避坑指南! 字体压缩 第一个坑!字体库的体积太大. 字体压缩的前提是要使用的内容是 ...

  10. Android字体占有内存,Android 字体内存泄露

    字体需求 在App开发中,一般都会使用自定义的字体,这些字体美化App的同时,可能还会带来额外的问题,最容易带来的问题就是内存泄露,这里举个实际中遇到的问题作为例子 上面的UI,我们需要在Title. ...

最新文章

  1. 如何更准确的理解面向对象编程中的对象
  2. public,private,protected访问权限在Java,C++中的解析
  3. 【GAN优化】详解SNGAN(频谱归一化GAN)
  4. html支持移动端吗,bootstrap支持手机端吗?
  5. php escape undfine,PHP中处理 undefined variable的方法 | Soo Smart!
  6. javase11源码文件_JavaSE 7,8:确定特定文件系统支持的视图
  7. java下文_java实现文件下载的两种方式
  8. oracle+纵向存储,oracle横向纵向求和代码实例
  9. Spring | SpringMVC
  10. Map使用put进行数据的添加,对哈希表的三步添加的步骤
  11. 【南航计算机网络实验】Ping 命令的实现
  12. python办公自动化——批量向excel填充数据
  13. 中国与印度软件开发之比较
  14. U盘修复“系统找不到指定文件”问题解决方法
  15. WPF Ribbon UI插件式开发框架
  16. Win 10 开机出现no bootable device
  17. python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片
  18. 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
  19. Linux虚拟机基本操作、Xshell连接、更改IP
  20. P5723 【深基4.例13】质数口袋

热门文章

  1. 产品经理必须知道的一些知识:决定价格的四种因素
  2. spark官方文档_这些未在 Spark SQL 文档中说明的优化措施,你知道吗?
  3. php教程知识点归纳,PHP知识点小结
  4. zblog php 侧边栏样式,ZBlogPHP免费主题Blogs如何修改侧边栏搜索框样式?
  5. 怎么修改_论文查重之后怎么修改?
  6. linux服务器之间文件复制命令
  7. 两个向量之间的夹角公式_关于平面向量夹角求参数取值范围的两种基本解法介绍...
  8. java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...
  9. 在react中使用svg的各种骚姿势
  10. Nuxt中如何使用Vuex-Store异步获取数据