Android自定义View实现简单文字描边功能
程序员文章站
2024-01-29 16:34:46
本文实例为大家分享了android实现简单文字描边功能的具体代码,供大家参考,具体内容如下
效果图:
实现代码:
package com.example....
本文实例为大家分享了android实现简单文字描边功能的具体代码,供大家参考,具体内容如下
效果图:
实现代码:
package com.example.zhangyu.myview.widget; import android.content.context; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.graphics.picture; import android.graphics.rect; import android.graphics.rectf; import android.os.build; import android.support.annotation.nullable; import android.support.annotation.requiresapi; import android.util.attributeset; import android.view.view; import com.example.zhangyu.myview.r; public class touchpullview extends view { //圆的半径 private float mcircleradius; private paint paint; private rect rect=new rect(); private int count; public touchpullview(context context) { super(context); init(); } public touchpullview(context context, @nullable attributeset attrs) { super(context, attrs); init(); } public touchpullview(context context, @nullable attributeset attrs, int defstyleattr) { super(context, attrs, defstyleattr); init(); } @requiresapi(api = build.version_codes.lollipop) public touchpullview(context context, @nullable attributeset attrs, int defstyleattr, int defstyleres) { super(context, attrs, defstyleattr, defstyleres); init(); } /** * 初始化 */ private void init() { paint = new paint(paint.anti_alias_flag); //设置抗锯齿 paint.setantialias(true); //设置防抖动 paint.setdither(true); //设置填充方式 paint.setstyle(paint.style.fill_and_stroke); //view的点击事件 setonclicklistener(new onclicklistener() { @override public void onclick(view v) { count++; invalidate();//重新绘制 } }); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); //设置方形画笔,背景。 paint.setcolor(color.yellow); //先绘制底板 canvas.drawrect(0, 0, getwidth(), getheight(), paint); float x = getwidth() / 2; float y = getheight() / 2; float offset = getwidth()/6; //绘制圆形 paint.setcolor(color.gray); mcircleradius = offset*1.41f; canvas.drawcircle(x, y, mcircleradius, paint); //绘制图片 bitmap bitmap = bitmapfactory.decoderesource(getresources(), r.mipmap.pic1); if (bitmap != null) { canvas.drawbitmap(bitmap,null,new rectf(x-offset,y-offset,x+offset,y+offset),paint); } //绘制文字外层的文字,边框 string s = string.valueof(count); paint.setstrokewidth(10); paint.setcolor(color.red); paint.settextsize(100); paint.gettextbounds(s,0,s.length(),rect); float textwidth = rect.width(); float textheight = rect.height(); x = getwidth()/2-textwidth/2; y = getheight() / 2+textheight/2; canvas.drawtext(s, x, y, paint); //绘制文字 paint.setcolor(color.blue); paint.setstrokewidth(0); canvas.drawtext(s, x, y, paint); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: php获取目录所有文件并将结果保存到数组的程序_PHP教程
下一篇: nginx方面的书籍