Android 实现弧形字体渐变文字
来源:互联网 发布:炫酷个人网站php源码 编辑:程序博客网 时间:2024/05/29 00:30
好久没写了 ,来把遇到的需求记录一下
首先放个效果,看是不是你们想要的 ,免得浪费大家的宝贵时间
如果是差不多的 就可以继续向下看了
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Path;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author Jesse * write this view for draw line,use it easy. */public class FuckView extends View { private String text="ewfewfref"; private List<Map<String, Integer>> mListPoint = new ArrayList<Map<String,Integer>>(); Paint mPaint = new Paint(); public FuckView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public FuckView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public FuckView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //换图区域,宽高自己设定,要圆要扁请随意 RectF rectF = new RectF(0, 0, 1000, 500); //这个功能的重要点 其实是先画一个轨迹 然后再把文字画到这个轨迹上 所以 想要什么样的扭曲,就画什么样的轨迹,下面就是画一个轨迹 Path path=new Path(); //画一个弧形 也可以是椭圆 上面的矩形就是这个图形的区域大小了 后面两个参数记住 一个是起始位置 一个是所画角度而不是终点位置 path.addArc(rectF,-160,180); mPaint.setColor(Color.RED); //去锯齿的 不多说 mPaint.setAntiAlias(true); mPaint.setTextSize(20); // 画布下移 canvas.translate(0, 160); // 绘制路径 mPaint.setStyle(Paint.Style.STROKE); canvas.drawPath(path, mPaint); // 下面就是绘制文本了 mPaint.setStyle(Paint.Style.FILL); //把传进来的string转成char【】类型 下面要用到 char[] chars= text.toCharArray(); for(int i=0;i<chars.length;i++){ //这里就是让文字由小到大了,里面的参数嘛 自己看着整 发挥创造性了 mPaint.setTextSize(60+3*i); char[] chars1=new char[1]; chars1[0]=chars[i]; //下面就是一个字符一个字符的往后画了 根据自己的需求调整宽度 尺寸 //这里说明一下参数,免得大家自己又要去看去猜去摸索 如果单纯的不需要文字逐渐变大或者啥的 只需要扭曲 //那就直接用canvas.drawTextOnPath();把string path 往里面传就好了 //然后下面的0 的位置是X的偏移 1是写Y轴的偏移 这个就可以让那个path是在文字下面 或者穿过中间 或者在下面了 //差不多了 我很懒 只给个思路 毕竟大家拿过去都要自己改改的 canvas.drawTextOnPath(chars1,0,1, path, i*(15+i), 20+i, mPaint); } } public void setFuckText(String text) { this.text=text; invalidate(); }}
先代码贴出来 接下来嘛 就容易了
在布局写一下
<com.example.yanwei.myapplication.FuckView android:id="@+id/fuck_view" android:layout_width="500dp" android:layout_height="500dp" />
在代码里调用一下
FuckView fuck= (FuckView) findViewById(R.id.fuck_view);fuck.setFuckText("ssssssssssssssssssssssss");
然后最后思路来源是下面这个网址 我贴出来
http://www.xuebuyuan.com/2071680.html
里面的代码实现之后是这样
好了 我已经懒出新高度了
希望有用,然后多创造一下 发挥下自己的创造力
1 0
- Android 实现弧形字体渐变文字
- 弧形文字+弧形canvas
- Android 自定义TextView实现文字渐变动画
- Android 自定义TextView实现文字渐变动画
- Android Textview实现文字颜色渐变效果
- canvas实现渐变文字
- css实现文字渐变
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- Android-LinearGradient实现TextView字体渐变的效果
- 请求的链式处理——职责链模式(四)
- 韩顺平oracle视频笔记一(创建用户、角色、权限分配、账号锁定)
- Android 手机适配过程中遇到的一些问题
- WPF dev GridControl 鼠标移上去显示Tooltip
- 韩顺平oracle视频笔记二(字段说明、表结构操作、日期插入、常用函数、主键ID)
- Android 实现弧形字体渐变文字
- 韩顺平oracle视频笔记四(事务)
- Android学习笔记 Fragment
- 如何将整个工程打成jar包,做一个可执行文件(java 命令)
- 记如何解决卡了两天的一个前端问题
- SSH2事务管理(transactionproxyfactorybean)
- H.264 NAL头解析
- js访问iframe里面的内容
- 手游优化方法汇总