您的位置:首页 > 移动开发 > Android开发

android屏幕分辨率计算转换

2015-10-16 10:07 495 查看
         在之前的公司,我们的UI设计并不知道如何给android做标注,这让我很开心。因为他给iOS做的标注是以px为单位的,如果也给我px这个单位,那我还得再转换一次,很麻烦的,于是猴子本着麻烦自己不如麻烦别人的原则让他给我按照dp进行标注。但是他用的软件标注出来的尺寸大大丰富了我的想象力(不堪入目),更要命的是,他用一个不标准(非主流分辨率)的手机去验看效果。我的天。。。还是整理一下吧。
px转dp公式 (
int
) (pxValue / scale +
0
.5f)
dp转px公式 (
int
) (dipValue * scale +
0
.5f)
    这里面唯一的参数就是
scale
,这个参数是有手机屏幕分辨率为一决定的,在代码中可以用[code]scale = context.getResources().getDisplayMetrics().density;
得到。计算规则是 屏幕斜向分辨率(根据横向分辨率与纵向分辨率用勾股定理计算得出)/屏幕尺寸。[/code]
   在这里记录一下代码,方便以后自用
import android.content.Context;/*** Created by vhawk on 15/10/16.* 密度转换工具*/public class DensityUtil {/*** 将px值转换为dip或dp值,保证尺寸大小不变** @param pxValue* @return*/public static int px2dip(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}/*** 将dip或dp值转换为px值,保证尺寸大小不变** @param dipValue* @return*/public static int dip2px(Context context, float dipValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dipValue * scale + 0.5f);}/*** 将px值转换为sp值,保证文字大小不变** @param pxValue* @return*/public static int px2sp(Context context, float pxValue) {final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;return (int) (pxValue / fontScale + 0.5f);}/*** 将sp值转换为px值,保证文字大小不变** @param spValue* @return*/public static int sp2px(Context context, float spValue) {final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;return (int) (spValue * fontScale + 0.5f);}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: