android中尺寸转化
2016-09-18 14:32
417 查看
public class SizeUtils {
}
谢谢。。。
/** * dp转px * * @param context 上下文 * @param dpValue dp值 * @return px值 */ public static int dp2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * px转dp * * @param context 上下文 * @param pxValue px值 * @return dp值 */ public static int px2dp(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * sp转px * * @param context 上下文 * @param spValue sp值 * @return px值 */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * px转sp * * @param context 上下文 * @param pxValue px值 * @return sp值 */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 各种单位转换 * <p>该方法存在于TypedValue</p> * * @param unit 单位 * @param value 值 * @param metrics DisplayMetrics * @return 转换结果 */ public static float applyDimension(int unit, float value, DisplayMetrics metrics) { switch (unit) { case TypedValue.COMPLEX_UNIT_PX: return value; case TypedValue.COMPLEX_UNIT_DIP: return value * metrics.density; case TypedValue.COMPLEX_UNIT_SP: return value * metrics.scaledDensity; case TypedValue.COMPLEX_UNIT_PT: return value * metrics.xdpi * (1.0f / 72); case TypedValue.COMPLEX_UNIT_IN: return value * metrics.xdpi; case TypedValue.COMPLEX_UNIT_MM: return value * metrics.xdpi * (1.0f / 25.4f); } return 0; } /** * 在onCreate()即可强行获取View的尺寸 * <p>需回调onGetSizeListener接口,在onGetSize中获取view宽高</p> * <p>用法示例如下所示</p> * <pre>{@code * SizeUtils.forceGetViewSize(view); * SizeUtils.setListener(new SizeUtils.onGetSizeListener() { * public void onGetSize(View view) { * Log.d("tag", view.getWidth() + " " + view.getHeight()); * } * });} * </pre> * * @param view 视图 */ public static void forceGetViewSize(final View view) { view.post(new Runnable() { @Override public void run() { if (mListener != null) { mListener.onGetSize(view); } } }); } /** * 获取到View尺寸的监听 */ public interface onGetSizeListener { void onGetSize(View view); } public static void setListener(onGetSizeListener listener) { mListener = listener; } private static onGetSizeListener mListener; /** * ListView中提前测量View尺寸,如headerView * <p>用的时候去掉注释拷贝到ListView中即可</p> * <p>参照以下注释代码</p> * * @param view 视图 */ public static void measureViewInLV(View view) { Log.i("tips", "U should copy the following code."); /* ViewGroup.LayoutParams p = view.getLayoutParams(); if (p == null) { p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); } int width = ViewGroup.getChildMeasureSpec(0, 0, p.width); int height; int tempHeight = p.height; if (tempHeight > 0) { height = MeasureSpec.makeMeasureSpec(tempHeight, MeasureSpec.EXACTLY); } else { height = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); } view.measure(width, height); */ }
}
谢谢。。。
相关文章推荐
- android----Bitmap / Drawable / byte[] 之间相互转化
- android自适应滑动键盘产生的屏幕尺寸变化
- Android各种屏幕尺寸
- android 将.txt文件转化为.db并使用raw下的数据文件
- android上的尺寸小结
- Android 屏幕 尺寸 单位
- android支持多尺寸屏幕【译】 mulit screen support
- android 界面自适应屏幕尺寸相关
- Android各种屏幕尺寸总结?
- Android 中获得屏幕的像素尺寸
- android获取屏幕尺寸、密度
- Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等
- Android中尺寸单位杂谈
- Android-----获取屏幕尺寸
- android 对超大屏幕尺寸的支持
- Android获取手屏幕尺寸
- android 获取屏幕尺寸方法
- android搭建--AVD尺寸调整
- 探究Android的多分辨率支持以及各种类型图标尺寸大小
- Android获取显示屏尺寸