在Android适应方案汇总(一个)、(两)在。我们理解一些基本概念。

那么详细的开发,我们应该重视起来。

首先,我们需要知道。关键的事实是,这两个适配器:

(1)。这点在单位的使用上用dp、sp以及图片资源存放于不同的drawable目录就能够解决这个问题;

(2)不同尺寸的适配,这点主要靠将相关值以及布局文件放置于不同的目录中来解决。

2.1 values目录

能够在project下创建不同的values目录:values-sw480dp, values-sw600dp, 

values-sw720dp-land等。比方一个控件的宽度,在10寸pad上是10dp,在8寸pad

上是5dp。

这时。你能够定义一个变量。button_width,然后在values-sw600dp

下写<dimen name=”button_width“>5dp</dimen>。在values-sw720-land下写

<dimen name=”button_width“>10dp</dimen>。这样就达到了在不同尺寸pad上,

对应控件大小不一样的效果。

 2.1 layout目录

    假设在不同尺寸设备上展示的布局有明显区别,只用values不同已经难以控制,

那么就能够考虑写不同的布局文件置于不同的layout目录下。android会依据设备

尺寸去载入对应目录下的布局文件。如:layout-sw480dp。layout-sw600dp,

layout-sw700dp等。

 值得注意的是,假设不是非常有必要,尽量採用2.1方案,方便维护。假设尺寸和分辨率都不同。

 那么就要结合(1)、(2)考虑了。

(补充:事实上values目录和layout目录不不过依据尺寸推断。也和分辨率有关,不过在通常情况下。

综合计算考虑。仅依据尺寸推断就能够了:

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

600dp的含义是:代表这个设备的最短的那一边。

获取设备的最短边的代码是:Configuration
config = getResources().getConfiguration();

int  smallestScreenWidth = config.smallestScreenWidthDp;

这个时候拿smallestScreenWidth 与600想比較就能够知道该设备是否能读取里面的资源了。

除此之外,为了方便适配,在编码时我们还应该注意什么呢,主要有下面几点:

(1)多使用权重(android:layout_weight)

尤其是在tab切换布局,listview title及Item布局等情况下;

  (2)设置宽度和高度时,尽量使用match_parent和wrap_content,避免把控件宽高设死;

  (3)父容器布局选用

  多使用RelativeLayout,FrameLayout。GridLayout等,降低布局层次。

当然,在使用

  权重时,得採用LinearLayout;

    (4) 在xml里,设置高度、宽度採用dp(dip),设置字体採用sp。

(应当指出的,在里面的代码,我们写setHeight(...)单位是px)

最新文章

  1. linux一些常用配置
  2. 关于OnEraseBkgnd和OnPaint的转载
  3. freeCodeCamp:Truncate a string
  4. sublime text 也能矩形选择
  5. 关于Block Formatting Context--BFC和IE的hasLayout
  6. 在windows系统上安装caffe
  7. android AsyncHttpClient 开源框架的使用
  8. Java内存结构、类的初始化、及对象构造过程
  9. Hadoop学习—最大的敌人是自己
  10. C#读取文件高效方法实现
  11. Delphi 服务操作
  12. 提高你的Java代码质量吧:不要让类型默默转换
  13. UVA - 11992:Fast Matrix Operations
  14. Python3 中 爬网页 \uxxx 问题
  15. Java中String类常用方法(字符串中的子字符串的个数)
  16. 20155238 2016-2017-2《Java程序设计》课程总结
  17. nodejs抓取别人家的页面的始末
  18. 感知器、logistic与svm 区别与联系
  19. 学习socket的小例子
  20. 第一个web程序(web.xml , ServletConfig , ServletContext)

热门文章

  1. ifconfig 源码
  2. HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)
  3. 跟我一起学extjs5(13--运行菜单命令在tabPanel中显示模块)
  4. [置顶] iframe使用总结(实战)
  5. Java Web----Java Web的数据库操作(二)
  6. java访问mysql方法数据库
  7. ubuntu12.04安装深度音乐播放器和深度影音
  8. 登录RMAN 报告ORA-12162:TNS:net service name is incorrectly specified错
  9. 诺贝尔物理学奖公布:LED灯将点亮了整个21世纪
  10. xml(3)--dom4j实现crud操作