dip与px单位之间转换

//转换dip为px
public static int convertDipOrPx(Context context, int dip) {
float scale = context.getResources().getDisplayMetrics().density;
return (int)(dip*scale + 0.5f*(dip>=0?1:-1));
}

//转换px为dip
public static int convertPxOrDip(Context context, int px) {
float scale = context.getResources().getDisplayMetrics().density;
return (int)(px/scale + 0.5f*(px>=0?1:-1));
}

首先我要说一句:dip不是像素密度,像素密度是dpi,引用句原话dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。好了,入正题吧,先说说px,px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。而dip,就是把屏幕的高分成480分,宽分成320分。

Resourcesresources=getResources(); float fPx=TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300 ,resources.getDisplayMetrics()); //同理px转dip: //floatfDip=TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,300,resources.getDisplayMetrics()); //intiDip=Math.round(fDip); int iPx=Math.round(fPx); EditTexteditText= new EditText( this ); editText.setWidth(iPx); editText.setHeight(LayoutParams.WRAP_CONTENT); //或者 //LayoutParamslayoutParams=newLayoutParams(iPx,LayoutParams.WRAP_CONTENT); //editText.setLayoutParams(layoutParams);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值