package cc.makeblock.android.utils;
import android.R.integer;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Paint.FontMetricsInt;
public class MBTextUtils {
private static final String TAG = "MBTextUtils";
/**
* 改变Paint的TextSize,TextSize自增,递归调用,直到width,height合适。调用此方法之前应该调用paint.setTextSize(1);
* @param paint
* @param text
* @param maxWidth
* @param maxHeight
*/
public static void changePaintTextSizeToSuitbale(Paint paint, String text, int maxWidth, int maxHeight){
int textSize = (int) paint.getTextSize();
int textWidth = 0;
int textHeight = 0;
// 1.用FontMetrics对象计算高度
FontMetricsInt fontMetrics = paint.getFontMetricsInt();
textHeight = fontMetrics.bottom-fontMetrics.top;//详细:(baseY+bottom)-(baseY-top);
//2.用bounds计算宽度
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
textWidth = bounds.right-bounds.left;
// Loger.e(TAG, "textSize="+textSize);
// Loger.e(TAG, "textWidth="+textWidth+" textHeight="+textHeight);
// Loger.e(TAG,"===========================================");
if (textWidth>maxWidth || textHeight>maxHeight) {
//刚刚超过
paint.setTextSize(--textSize);
return;
}
paint.setTextSize(++textSize);
changePaintTextSizeToSuitbale(paint, text, maxWidth, maxHeight);
}
public static int[] getTextWH(Paint paint, String text){
int textWidth = 0;
int textHeight = 0;
// 1.用FontMetrics对象计算高度
FontMetricsInt fontMetrics = paint.getFontMetricsInt();
textHeight = fontMetrics.bottom-fontMetrics.top;//详细:(baseY+bottom)-(baseY-top);
//2.用bounds计算宽度
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
textWidth = bounds.right-bounds.left;
int[] wh = {textWidth, textHeight};
return wh;
}
}