长期以来,适配都是Android开发人员的通病,Android的开源导致了Android的多样化,各大手机厂商对Android系统进行了深度定制,根据自己需求,开发出各种各样尺寸的手机。这些各种各样尺寸的手机,无疑给我们这些开发人员添了很多麻烦,到底怎样才能做到更好的适配呢,以下是本人适配总结,如果有欠缺或不对的地方,还望指出与海涵。

  1. 首先先知道基础概念

屏幕大小(screen size):屏幕的实际大小,用屏幕对角线长度来衡量。ndroid把屏幕分为以下4种:small(小 屏),normal(正常屏),large(大屏),extra large(特大屏)。

屏幕密度(Screen Density):一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点)。相比 起medium、high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏 幕拥有的像素更少。

方向(orientation):屏幕方向分为landscape(横屏)和portrait(竖屏)。

分辨率(Resolution): 屏幕上的总实际像素数。对屏幕进行适配时,一般不关注它的分辨率,只关注它的屏 幕大小和密度。

密度无关的像素(Density-independent pixel,dp或dip): 为了保证你的UI适合不同的屏幕密度,建议你采 用dp来定义程序UI。

计算方法:

publicstaticintdip2px(Contextcontext,floatdipValue){finalfloatscale=context.getResources().getDisplayMetrics().density;return(int)(dipValue*scale+0.5f);}publicstaticintpx2dip(Contextcontext,floatpxValue){finalfloatscale=context.getResources().getDisplayMetrics().density;return(int)(pxValue/scale+0.5f);}

android把屏幕密度分为4种:low,medium,high,extra high。各dpi代表的密度:ldpi:120 mdpi:160 hdpi:240 xdpi:320 xxdpi:480 你可以根据下面的方法获取你手机的密度

DisplayMetricsmetric=newDisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);intwidth=metric.widthPixels;//屏幕宽度(像素)intheight=metric.heightPixels;//屏幕高度(像素)floatdensity=metric.density;//屏幕密度(0.75/1.0/1.5)intdensityDpi=metric.densityDpi;//屏幕密度DPI(120/160/240)System.out.println("width:"+width+"\nheight:"+height+"\n屏幕密度:"+density+"\n屏幕密度DPI:"+densityDpi);



2. 具体的适配方法

首先需要在Manifest里面需要设置支持屏幕类型

<supports-screensandroid:smallScreens="true"//是否支持小屏android:normalScreens="true"//是否支持中屏android:largeScreens="true"//是否支持大屏android:xlargeScreens="true"//是否支持超大屏android:anyDensity="true"//是否支持多种不同密度的屏幕”/>

1、对应用图标的适配:

hdpi 72*72 | ldpi 36*36 | mdpi 48*48 | xdpi 96*96 | xxdpi 120*120

2、对不同屏幕进行适配

  1. 在res目录下面创建不同的layout文件夹,例如:layout-large 也可以根据分辨率创建如layout-480x800 ,然后放响应的xml文件即可

  2. 可以对不同密度的手机提供不同的图片(建议使用)因为很多时候如果你做的应用,图片很多的话,一套图是肯定满足不了的,因为可能低密度显示没问题,但是较高密度手机就会显示很小

  3. 另外界面适配很大一部分也取决于你的布局,要学会灵活的使用四大布局 尽量多的使用wrap_contentmatch_parent dp ,多分析一下界面的设计, 有时候能起到事半功倍的作用。

更多相关文章

  1. AndroidX将替代 Android支持库(android.support.*)
  2. 如何让android 支持多种屏幕尺寸
  3. AndroidX终极迁移指南
  4. Android(安卓)-- AppWidget 高级篇
  5. Android设置屏幕亮度的两种方式
  6. Android获取屏幕分辨率及DisplayMetrics简介
  7. Android程序库
  8. android 自适应 多屏幕支持 --Android多分辨率适配
  9. Android开发之如何获取Android手机屏幕的大小(分辨率、密度)

随机推荐

  1. Android数据存储(一)
  2. Android—— 4.2 Vold挂载管理_NetlinkMa
  3. Android C++层内存泄漏检测
  4. NDK开发笔记——Android使用openssl
  5. Android基础 : Android ContentProvider
  6. android 混淆配置 实例实战项目讲解
  7. 从零开始搞懂Android网络请求——异步加
  8. php做接口+android 请求API接口并展示到L
  9. 用Eclipse开发Android项目
  10. Android dumpsys命令详细使用