字体工具类:
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){
Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/BRUSHSCI.TTF");
textview.setText("hello.i'm \"brushsci\" fonts");
textview.setTypeface(tf);
}
/**
* 设置文本超链接
* @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);
}
/**
* 设置文字背景颜色
* @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){
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);
}
}