1 默认设置

如果应用程序针对android1.5或更低版本进行编译,android将假定应用程序的设计目的是在经典的屏幕尺寸和分辨率下效果良好,如果将应用程序安装在一个带有较大屏幕的手机上,android会自动在兼容模式下运行应用程序,根据实际屏幕大小对所有内容进行缩放。

如果应用程序是针对android1.6及以上版本编译的,android假定可正确处理所有屏幕尺寸问题,因此不会以兼容模式运行应用程序。

2 多合一

在android中,处理多种屏幕尺寸最简单的办法是设计ui,使其能够自动根据屏幕的大小进行缩放,无需任何特定于尺寸的编码或资源。

2.1 考虑规则,而不是位置

最简单的规章就是android:layout_width和android:layout_height的fill_parent和wrap_content值。

最好环境就是用relativelayout。
明确地将部件固定到屏幕的底部或右侧,而不是让它们由于其他布局而改变位置
控制相互连接的部件之间的距离,无需依靠填充内容或空白。
指定规则时最好的控制方法是创建自己的布局类。

2.2 考虑物理尺寸
2.3 避免使用实际像素
2.4 选择可缩放的drawable

经典的位图(png、jpg和gif)从本质上讲都不可缩放。

解决这个问题的一个方式是尝试避免使用静态位图,使用nine-patch(可拉伸)位图和xml定义的drawable作为替代方法。Nine-patch(可拉伸)位图是一个png文件,进行了特殊编码,以通过规则说明如何拉伸该图以占据更多的空间。Xml定义的drawable使用一个类似svg xml的语言来定义形状、笔触和填充等。

3 量身定制

Android提供了根据应用程序运行环境切换资源或代码块的方式。

3.1 添加<supports-screen>
3.2 资源和资源集

基于屏幕的大小或密度切换不同内容的主要方法是创建资源集。

1. 默认缩放
Android将使用正常的缩放算法缩放普通的位图。

2. 基于密度的设置
如果想根据不同的屏幕密度拥有不同的布局、尺寸等,可以使用-ldpi、-mdpi和-hdpi资源集标签。

3. 基于尺寸的设置
如果想根据屏幕尺寸拥有不同的资源集,可使用android提供的-small、-normal和-large资源集标签。创建res/layout-large-land/可指定用于横向大屏幕上的布局

4. 基于版本的设置
可以向资源集加入一个-vN形式的版本标签,N表示api的级别。

3.3 查找尺寸

如果资源集中有独特的内容,你可以找到它并在代码中相应地使用分支语句。

可以通过configuration对象查找屏幕尺寸类,这个对象通常由一个activity通过getresource().getconfiguration()获得。

4 一切都是模拟的

4.1 密度不同
4.2 调整密度

在android1.6中引入的android avd manager。此工具的android2.0版本拥有一个launch options。

4.3 访问实际设备

5 充分利用形式

使用不同布局来利用额外的屏幕空间,而不是简单地在相同物理空间内增加像素的数目。

5.1 用按钮替代菜单
5.2 使用简单的activity替代选项卡
5.3 整合多个activity

6 示例:EU4You

6.1 第一个版本
6.2 固定字体大小
6.3固定大小的图标
6.4 使用空间
6.5不是浏览器会怎样

7 合作伙伴的错误有哪些

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android学习——uses-sdk标签详解
  6. Android高手进阶教程(四)之----Android(安卓)中自定义属性(attr.
  7. Android(安卓)使用多线程来做多文件上传Or下载
  8. android使用html开发软件界面
  9. Android(安卓)NDK

随机推荐

  1. Android工程打包(含React Native工程)
  2. Android(安卓)平台综述
  3. Android(安卓)FFmpeg在Windows上编译的版
  4. Android中常用的颜色
  5. android studio 提示"Gradle project syn
  6. 【爬坑记录】ncnn移植到Android上出现的
  7. Android周报第二十一期
  8. Android在非UI线程中更新UI的方法
  9. Android(安卓)调用Android功能实现虚拟打
  10. Android(安卓)JNI编程提高篇之一