Typeface 篇

字体工具类:
import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.BlurMaskFilter.Blur;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.MaskFilterSpan;
import android.text.style.ScaleXSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.widget.TextView;

/**
 * 字体工具类
 */
public class TypefaceUtils {

    /**
     * 通过asset文件来设置自定义字体
     * @param context
     * @param textview
     * @param content
     * 
     */
    public static void CreatFromAsset(Context context,TextView textview,String content){
        //通过assets目录下文件生成字体
        Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/BRUSHSCI.TTF");  //通过自定义字体生成字体对象
        textview.setText("hello.i'm \"brushsci\" fonts");
        textview.setTypeface(tf);  //将TextView设置自定义字体。
    }
    /**
     * 设置文本超链接
     * @param url
     * @param content
     * @param textview
     */
    public static void addUrlSpan(String url,String content,TextView textview) {  
        SpannableString spanString = new SpannableString(content);  
        URLSpan span = new URLSpan(url);  
        spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
        /*  Spanned linkStr = Html.fromHtml("点击<a href=\"http://www.baidu.com\">这里</a>访问百度,点击<a href=\"tel:10086\">这里</a>拨打10086");  //将字符串按html格式解析为spanned对象
        tv.setText(linkStr);
        tv.setMovementMethod(LinkMovementMethod.getInstance());  //允许TextView使用超连接。如果不设置点击没有效果。
        tv.setLinkTextColor(Color.RED);  //设置超链接文本颜色,默认为蓝色
         */ }  

    /**
     * 设置文字背景颜色
     * @param content 内容
     * @param textview
     * @param colorstring 颜色
     */
    public static void addBackColorSpan(String content,TextView textview,String colorstring) {  
        SpannableString spanString = new SpannableString(content);  
        BackgroundColorSpan span = new BackgroundColorSpan(Color.parseColor(colorstring));  
        spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  

    /**
     * 设置文字前景颜色(文字颜色)
     * @param content
     * @param textview
     * @param colorstring
     */
    public static void addForeColorSpan(String content,TextView textview,String colorstring) {  
        SpannableString spanString = new SpannableString(content);  
        ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor(colorstring));  
        spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  

    /**
     * 设置字体字号大小
     * @param fontsize (0-?)
     * @param content
     * @param textview
     */
    public static void addFontSpan(int fontsize,String content,TextView textview) {  
        SpannableString spanString = new SpannableString(content);  
        AbsoluteSizeSpan span = new AbsoluteSizeSpan(fontsize);  
        spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  

    /**
     * 设置字体(粗体 ,粗斜体 ,斜体, 常规)
     * @param content
     * @param textview
     * @param fonttype 
     *    1.粗体 2.粗斜体 3.斜体 4.常规
     *    <p>
     *      Typeface.DEFAULT //常规字体类型
    Typeface.DEFAULT_BOLD //黑体字体类型
    Typeface.MONOSPACE //等宽字体类型
    Typeface.SANS_SERIF //sans serif字体类型
    常用的字体风格名称还有:
    Typeface.BOLD //粗体
    Typeface.BOLD_ITALIC //粗斜体
    Typeface.ITALIC //斜体
    Typeface.NORMAL //常规
     */
    public static void addStyleSpan(String content,TextView textview,int fonttype) {  
        SpannableString spanString = new SpannableString(content); 
        int fontType=Typeface.NORMAL;
        switch (fonttype) {
        case 1:
            fontType=Typeface.BOLD;
            break;
        case 2:
            fontType=Typeface.BOLD_ITALIC;
            break;
        case 3:
            fontType=Typeface.ITALIC;
            break;
        case 4:
            fontType=Typeface.NORMAL;
            break;
        }
        StyleSpan span = new StyleSpan(fontType); 
        spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  


    /**
     * 添加删除线
     * @param content
     * @param textview
     */
    public static void addStrikeSpan(String content,TextView textview) {  
        SpannableString spanString = new SpannableString(content);  
        StrikethroughSpan span = new StrikethroughSpan();  
        spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  

    /**
     * 添加下划线
     * @param content
     * @param textview
     */
    public static void addUnderLineSpan(String content,TextView textview) {  
        SpannableString spanString = new SpannableString(content);  
        UnderlineSpan span = new UnderlineSpan();  
        spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  


    /**
     * 添加图片
     * @param context
     * @param drawableid
     * @param textview
     */
    public static void addImageSpan(Context context,int drawableid,TextView textview) {  
        SpannableString spanString = new SpannableString(" ");  
        Drawable d = context.getResources().getDrawable(drawableid);  
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());  
        ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);  
        spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
        textview.append(spanString);  
    }  
    /**
     * 设置文字横向(x轴)缩放效果
     * @param textview
     * @param content
     * @param zoomsize 缩放倍数
     *     1.4放大1.4倍    0.2缩小到0.2
     */
    public static void SetFontZoom(TextView textview,String content,float zoomsize){
        Spannable scaleSpan = new SpannableString(content);
        ScaleXSpan sxSpan = new ScaleXSpan(zoomsize);
        scaleSpan.setSpan(sxSpan, 0, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        textview.setText(scaleSpan);
    }
    /**
     * 设置文字上标或者下标 ( a²+b²=c² ,Na₂CO₃)
     * @param content
     * @param textview
     * @param position 具体第几个字符需要设置上标(从1开始)
     * @param type (1 :上标  2 :下标)
     */
    public static void SetFontSuperscript(String content,TextView textview,int[] position,int type){
        /*
         * //效果 a²+b²=c²
         * Spannable superSpan = new SpannableString("勾股定理:a2+b2=c2");
        superSpan.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        superSpan.setSpan(new SuperscriptSpan(), 9, 10, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        superSpan.setSpan(new SuperscriptSpan(), 12, 13, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        tv.setText(superSpan);*/

        /*  Na₂CO₃
         * Spannable subSpan = new SpannableString("碳酸钠的化学方程式是:Na2CO3");
        subSpan.setSpan(new SubscriptSpan(), 13, 14, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        subSpan.setSpan(new SubscriptSpan(), 16, 17, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        tv.setText(subSpan);*/
        if(position.length==0 ||position==null)
            return;
        Spannable superSpan = new SpannableString(content);
        for(int a=0;a<position.length-1;a++){
            if(type==1){
                superSpan.setSpan(new SuperscriptSpan(), position[a-1], position[a], Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
            }else{
                superSpan.setSpan(new SubscriptSpan(), position[a-1], position[a], Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
            }
        }
        textview.setText(superSpan);
    }
    /**
     * 设置文字模糊效果
     * @param content
     * @param textview
     * @param position (设置第几个文字出现模糊 从下标1开始)
     */
    public static void SetFontDim(String content,TextView textview,int[] position){
        if(position.length==0 ||position==null)
            return;
        Spannable spanMohu = new SpannableString(content);
        MaskFilterSpan mfSpan1 = new MaskFilterSpan(new BlurMaskFilter(5, Blur.OUTER));  //设置发光半径及发光效果
        for(int a=0;a<position.length-1;a++){
            spanMohu.setSpan(mfSpan1, position[a-1], position[a], Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        }
        textview.setText(spanMohu);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值