Android根据分辨率进行单位转换-(dp,sp转像素px)

本文介绍如何在Android应用中统一单位设置为'dp',以实现不同分辨率下的适配,并提供了单位转换方法,包括从dp到px及从px到dp的转换,帮助开发者优化布局效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载于: http://orgcent.com/android-dpsppx-unit-conversion/ | 萝卜白菜的博客

 

写的很好,特来笔记

 

 

Android系统中,默认的单位是像素(px)。也就是说,在没有明确说明的情况下,所有的大小设置都是以像素为单位。

如果以像素设置大小,会导致不同分辨率下出现不同的效果。那么,如何将应用中所有大小的单位都设置为’dp’呢?
实际上TextView.setTextSize()重载了根据单位设置大小的方法。

笔者在此基础上实现了以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 获取当前分辨率下指定单位对应的像素大小(根据设备信息)
* px,dip,sp -> px
*
* Paint.setTextSize()单位为px
*
* 代码摘自:TextView.setTextSize()
*
* @param unit  TypedValue.COMPLEX_UNIT_*
* @param size
* @return
*/

public float getRawSize ( int unit, float size ) {
       Context c = getContext ( ) ;
       Resources r ;

       if (c == null )
           r = Resources. getSystem ( ) ;
       else
           r = c. getResources ( ) ;
       
       return TypedValue. applyDimension (unit, size, r. getDisplayMetrics ( ) ) ;
}

下面是网友提供的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/

public static int dip2px ( Context context, float dpValue ) {
  final float scale = context. getResources ( ). getDisplayMetrics ( ). density ;
  return ( int ) (dpValue * scale + 0.5f ) ;
}

/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/

public static int px2dip ( Context context, float pxValue ) {
  final float scale = context. getResources ( ). getDisplayMetrics ( ). density ;
  return ( int ) (pxValue / scale + 0.5f ) ;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值