屏幕自适应 计算屏幕长款方法 各种单位转换方法

方法一:getDefaultDisplay().getH/W()         计算结果的单位是  PX

int screenWidth1  = getActivity().getWindowManager().getDefaultDisplay().getWidth();            
int screenHeight1 = getActivity().getWindowManager().getDefaultDisplay().getHeight();


方法二:getResources().getDisplayMetrics().H/W     可以得到计算结果单位 DPI, PX


DisplayMetrics dm2 = getResources().getDisplayMetrics();  
float density  = dm2.density;      
int densityDPI = dm2.densityDpi;     


float xdpi = dm2.xdpi;             
float ydpi = dm2.ydpi;        


int screenWidth2  = dm2.widthPixels;     
int screenHeight2 = dm2.heightPixels;  

  
tvScreenHeight2.setText(screenHeight2+" px");
tvScreenWidth2.setText(screenWidth2+" px");


tvScreenDensity2.setText(density+"");

tvScreenDensityDPI2.setText(densityDPI+"");


方法三:getDefaultDisplay().getMetrics(DisplayMetrics).H/W    可以得到计算结果DPI,PX ,DIP;

DisplayMetrics dm3 = new DisplayMetrics();  
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm3);  
 
density  = dm3.density;     
densityDPI = dm3.densityDpi;    
xdpi = dm3.xdpi;           
ydpi = dm3.ydpi;  
 
tvScreenDensity3.setText(density+"");
tvScreenDensityDPI3.setText(densityDPI+"");
 
int screenWidth3 = dm3.widthPixels;          
int screenHeight3 = dm3.heightPixels;        

tvScreenHeight3.setText(screenHeight3+" px");
tvScreenWidth3.setText(screenWidth3+" px");
 
float screenWidthDip  = (dm3.widthPixels/density);    
float screenHeightDip = (dm3.heightPixels/density);   


tvScreenHeight4.setText(screenHeightDip+" dip");
tvScreenWidth4.setText(screenWidthDip+" dip");

另附各单位转换方法:

dip : device independent pixels ,设备无关像素。 我看很多帖子写的五花八门的,关于d的,什么display啊各种都有,既然是设备无关,我还是觉得device靠谱。

   dp就是dip

dpi : dots per inch , 直接来说就是一英寸多少个点。常见取值 120,160,240。 我一般称作像素密度,简称密度

density : 直接翻译的话貌似叫 密度。常见取值 1.5 , 1.0 。


分辨率: 横纵2个方向的像素点的数量,常见取值 480X800 ,320X480

屏幕尺寸: 屏幕对角线的长度。电脑电视同理。

     这里还涉及另外一个问题,就是屏幕比例的问题。因为只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。

drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi,drawable-xxhdpi,这几个目录对应的pppi为

120ppi  160ppi   240ppi    320ppi   480ppi

density 屏幕密度  

desityDpi 

px(pixels) 像素

dip

density = densityDpi/160                

px(pixels) = dip * (densityDpi/160) = dip*density

dip(device independent pixels) = dp

dip = (px * 160)/densityDpi = px / density




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值