第一部分:开发前的准备-第五章 平板与手机

第5章 平板与手机

虽然理论上建议大家支持所有的屏幕设备,但这确实比较麻烦而且很容易出错。我们一般***把手机和平板分时两大类来发布两个APK这样的效果更容易管理。读者可以理解为我们需要针对个别boss,换个职业来对付它。

5.1 平板与手机支持

其实我们发现平板提供更多的空间,让你的应用能显示更多的信息,但在手机上时可以会分几个部分显示,不会一次性全部显示出来。大部分情况下平板和手机的体验会有明显的不同。在android3.0上 ,android 引入了一套新的框架API,它允许我们更有效的设计应用,并更好的利用大屏幕。例如3.0新加入的Fragment类,这个类允许你对不同行为的UI组件分成独立的部分。然后你可以创建多屏设备(例如2屏,3屏手机)的布局啦并使它们结合起来。android3.0还导入了ActionBar这个类,它在屏幕上方提供一个专门的用户界面,来识别应用并提供用户操作和导航。 

本章内容以Fragment和ActionBar为例,在手机和平板上这两种设备上,它帮助你创建一个有着独特用户体验的应用程序,并且使用fragments和action bar。请记住看这一章之前,请看完前面的内容,它对你理解本章内容有重要的作用。本章描述了一个用户界面,它支持不同的屏幕尺寸和密度并有灵活的布局和可供选择的位图。

基本设计原则

下面是一些设计原则它能帮助你创建一个在手机和平板中都能适用的应用,并且优化用户体验。

1.基于fragments ,建立我们的activity:可重复使用的不同组合----多面板平板和单面板手机。在一个Acivity中一个 Fragment 代表一个行为或者一部分用户界面。你可以认为

Fragment是一个Activity中的一种模块。有其自己的生命周期,并可以在其中添加或删除而正在运行的Activity。如果你没有用过fragments,没关系,我们会在android 框架学习中的第一

章讲解,而且还有SDK中的例子。

2.使用ActionBar:它可以根据屏幕上的大小调整动作条的布局。

ActionBar是一个UI组件,它可以替代传统的title bar(是一种目前经常用的通知栏)。默认的 action bar 在上方的左边显示我们的应用 logo,然后是标题。右侧则是可以访问的选择菜单。你可以从选项菜单打开一个items(items可以理解为list或菜单中的一个项目)并直接打开它。你也能添加有导航功能的action bar作为标签或者下拉列表。直接点击icon还会导航到home页或者相当于一个back键的功能。

3.实现灵活布局:一个灵活的布局设计允许你的应用能使用屏幕大小的变化。不是所有的平板和手机都是一样的大小。你要根据平板和手机提供不同的fragment 组合,因为对于灵活调整布局有很重要的作用。

注意: 请使用android3.0版本才有可用的API哦!

5.2 只支持手机 

因为系统通常会自动缩放来使我们的资源或者布局来适应大屏幕,所以我们不需要过滤大屏幕。只要我们知道实践中应该注意哪些(第五章的内容)问题,我们的应用在大屏幕上也能很好的显示。

但你可能发现你的应用不会完全的等比缩放,或者可能你决定只为你的应用配置两个不同的屏幕适配版本。这种情况下,你可以使用<compatible-screens>节点来组合管理屏幕的密度和大

小。比如在Android Market就使用这样的信息来过滤你的应用,仅支持你应用配置的设备才会被显示出来。<compatible-screens> 节点必须包含一个或更多的<screen>节点,每一个<screen>节点中指定一个屏幕配置来兼容我们的应用。我们需要使用使用android:screenSize和

android:screenDensity这两个属性。每一个 <screen> 节点中必须包含两个属性来指定个别的屏幕配置,如果只有一个属性,那么这个节点是无效的。例如,如果你的应用兼容small和normal大小的屏幕 , 包括所有屏幕密度的话。你就必须指定8个 <screen> 节点,因为每一个屏幕大小中都有四种密度配置。你必须写出来,下面是在manifest中的实例代码:

<manifest ... > <compatible-screens> <!-- all small size screens --> <screenandroid:screenSize="small"android:screenDensity="ldpi"/> <screenandroid:screenSize="small"android:screenDensity="mdpi"/> <screenandroid:screenSize="small"android:screenDensity="hdpi"/> <screenandroid:screenSize="small"android:screenDensity="xhdpi"/> <!-- all normal size screens --> <screenandroid:screenSize="normal"android:screenDensity="ldpi"/> <screenandroid:screenSize="normal"android:screenDensity="mdpi"/> <screenandroid:screenSize="normal"android:screenDensity="hdpi"/> <screenandroid:screenSize="normal"android:screenDensity="xhdpi"/> </compatible-screens> ... <application ... > ... <application> </manifest>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfywj.html