好久没写了 ,来把遇到的需求记录一下

首先放个效果,看是不是你们想要的 ,免得浪费大家的宝贵时间

Android 实现弧形字体渐变文字_第1张图片


如果是差不多的 就可以继续向下看了

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, Integer>> mListPoint = new ArrayList,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;ilength;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();    }}

先代码贴出来 接下来嘛 就容易了 


在布局写一下

    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


里面的代码实现之后是这样

Android 实现弧形字体渐变文字_第2张图片


好了 我已经懒出新高度了 

希望有用,然后多创造一下 发挥下自己的创造力

更多相关文章

  1. android 笔记 --- 按钮上面的文字滚动起来
  2. android 中文字体向上偏移解决方案
  3. android给textview中的文字加链接
  4. 如何实现textview多余文字的水平滚动显示
  5. 关于Android中android:marginBottom不起作用以及android:signleL
  6. Android 弧形列表转盘的实现(三),View跟随RecyclerView做旋转动画;
  7. Android 百度人脸识别、人脸采集、文字识别(身份证),人证对比
  8. STM32开发GPRS传输的GPS定位器-android studio开发客户端APP显示
  9. Android TextView(EditView)文字底部或者中间 加横线

随机推荐

  1. appwidget中使按钮不能用 以及 appwidget
  2. FS_S5PC100平台上Android Camera架构分析
  3. android:第二个anroid项目 电话拨号器
  4. android在.java中手写布局
  5. Android(安卓)4.4 KitKat NotificationMa
  6. 第一部分:如何在iOS和Android上选择一个J
  7. Android SharePreferences源码解析
  8. Android 开发 之 折叠布局(CollapsingTool
  9. 网页 Android(安卓)套壳
  10. 20180505_android传感器种类及获取