文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android文字描边功能的实现

2022-06-06 07:57

关注

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

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

我这里使用的方法是重写

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);
  }
}

布局文件如下:


<com.my.teststroketextview.StrokeTextView
    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自定义View实现简单文字描边功能


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯