欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义View实现简单文字描边功能

程序员文章站 2024-01-29 16:34:46
本文实例为大家分享了android实现简单文字描边功能的具体代码,供大家参考,具体内容如下 效果图: 实现代码: package com.example....

本文实例为大家分享了android实现简单文字描边功能的具体代码,供大家参考,具体内容如下

效果图:

Android自定义View实现简单文字描边功能

实现代码:

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

 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。