2014.01.16(2) ——— android 关于适配的工具类

kiduo0 2014-01-16

2014.01.16———android关于适配的工具类

import android.content.Context;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.widget.TextView;

/**
 * 主要用于适配 
 * 最好都用px,这样计算的精确
 */
public class UtilFit {

    //ui设计的时候 基于的屏幕的宽和高
    private int mBaseWidth;
    private int mBaseHeight;
    //当前手机的宽和高
    private int mCurrentWidth;
    private int mCurrentHeight;
    
    private float mScaleWidth;
    private float mScaleHeight;
    
    //默认 720 * 1280
    public UtilFit(Context pContext){
        this(pContext, 720, 1280);
    }
    
    public UtilFit(Context pContext, int pBaseWidth, int pBaseHeight){
        this.mBaseHeight = pBaseHeight;
        this.mBaseWidth = pBaseWidth;
        DisplayMetrics mDis = pContext.getResources().getDisplayMetrics();
        this.mCurrentHeight = mDis.heightPixels;
        this.mCurrentWidth = mDis.widthPixels;
        
        this.mScaleHeight = 1.0f * mCurrentHeight / mBaseHeight;
        this.mScaleWidth = 1.0f * mCurrentWidth / mBaseWidth;
    }
    
    /**
     * 适配字体
     * 最好textview里面的字体用px,也就是ui给的标注里面的值
     * 这样计算的更准确
     * @Title: setTextSize
     * @param pTxt
     * @return void
     * @date 2014-1-16 上午11:14:06
     */
    public void setTextSize(TextView pTxt){
        pTxt.setTextSize(TypedValue.COMPLEX_UNIT_PX, pTxt.getTextSize() * mScaleWidth);
    }
    
    /**
     * 
     * 根据原来image的宽高比来计算image的高度
     * 一般用在gridview里面的图片适配
     * @Title: getImageHeight
     * @param pSrcHeight
     * @param pSrcWidth
     * @param pDstWidth
     * @return
     * @return int
     * @date 2014-1-16 上午11:11:39
     */
    public int getImageHeight(float pSrcHeight, float pSrcWidth, int pDstWidth){
        float tScale = 1.0f * pSrcHeight / pSrcWidth;
        return Math.round(tScale * pDstWidth);
    }
    
    /**
     *用来计算填充屏幕宽度的image的高度 
     * @Title: getImageHeight
     * @param pSrcHeight
     * @return
     * @return int
     * @date 2014-1-16 上午11:17:15
     */
    public int getImageHeight(float pSrcHeight){
        return Math.round(mScaleWidth * pSrcHeight);
    }
    /**
     * 这个可以用来得到目标view在本手机上应该显示的高
     * 
     * 例如 一个ViewPager在base也就是720*1280,上面高度为100 这个是ui给的标注
     * 然后 我的手机是480*800的 这个时候 就可以 用这个来得到应该在我的手机上显示的高度
     * 800/1280 * 100 = 62.5
     * 
     */
    public int getViewHeight(float pSrcHeight){
        return Math.round(mScaleWidth * pSrcHeight);
    }
}

相关推荐