分享一篇不错的文章,Android应用开发的朋友们必须知道的呦!
日前&的首席技术作家&Scott Main&为&&撰写了一篇文章介绍如何把为Android 3.0平板开发的程序移植到即将发布的Ice Cream Sandwich 系统上.
在文中&Scott Main&还提到,Android系统从Ice Cream Sandwich以后都将保持让同一个App运行在各种尺寸的屏幕上,让开发者不再为屏幕尺寸不统一而烦恼!
但是 那些为 Honeycomb&系统而开发的平板程序,是针对大尺寸屏幕设计的, 在Ice Cream Sandwich 尚未发布的时候 这些程序还不会对用户照成什么干扰, 而 在Ice Cream Sandwich发布以后 就不是这么一回事了, 由于Android系统是向后兼容的, 所以等Ice Cream Sandwich系统发布以后,有用户使用该系统的小屏幕手机来使用你为Honeycomb开发的大屏幕程序就会出现问题. 为了避免这种伤害用户的行为,现在你就可以开始修改你的程序了.
对于那些专门为Honeycomb平板而开发的程序,需要做两件事情:
只支持Honeycomb平板如果你的程序只支持大屏幕的平板,则修改程序是比较简单的,只需要在 manifest 文件中添加 &&标签即可:
&manifest ... &
& & &supports-screens android:smallScreens=&false&
& & & & & & & & & & & android:normalScreens=&false&
& & & & & & & & & & & android:largeScreens=&false&
& & & & & & & & & & & android:xlargeScreens=&true&
& & & & & & & & & & & android:requiresSmallestWidthDp=&600& /&
& & &application ... &
& & & & ...
& & &/application&
&/manifest&
上面的配置文件说明了:
由于添加了requiresSmallestWidthDp&这个属性,所以你的程序需要使用3.2或者更新的SDK来编译和发布. 在开发程序的时候 为了保险起见,建议先使用&指定版本的SDK来开发程序,等程序开发好了再加上requiresSmallestWidthDp这个属性,然后使用3.2版本的SDK来发布程序.
这样的话 就避免了你无意中使用了3.2中的API而导致程序在低版本系统上崩溃的情况.让Honeycomb程序支持小屏幕设备如果你想让为平板系统开发程序也运行在小屏幕设备上,则推荐修改你的程序让其支持小屏幕,而不是发布多个APK来支持不同的屏幕.由于Ice Cream Sandwich支持 Honeycomb的所有API,所以对于支持以下2要素的app 在移植这些程序的时候并不是很复杂.
下面我们将介绍一种简单适配的开发方法:
上图显示了在小屏幕和大屏幕设备上使用fragment的显示方式.在上图所示的App中, Activity A 是程序入口,其根据屏幕大小用不同的layout文件来显示一个或者两个fragments. 当在小屏幕设备上 layout文件只包含Fragment A(图中的List View);当在大屏幕设备(平板)上 layout文件包含Fragment A和Fragment B 两个Fragments.
下面是用于小屏幕的layout文件: res/layout/main.xml
&?xml version=&1.0& encoding=&utf-8&?&
&FrameLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&&
android:id=&@+id/list_frag&
android:layout_width=&match_parent&
android:layout_height=&match_parent&/&
&/FrameLayout&
下面是用于大屏幕的layout文件:res/layout-large/main.xml
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&horizontal&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:id=&@+id/frags&&
android:id=&@+id/list_frag&
android:layout_width=&@dimen/titles_size&
android:layout_height=&match_parent&/&
android:id=&@+id/details_frag&
android:layout_width=&match_parent&
android:layout_height=&match_parent& /&
&/LinearLayout&
当用户选择列表中的一个选项的时候, 程序如何响应依赖于Fragment B是否显示在当前layout中. 如果Fragment B显示则 Activity A只要通知Fragment B更新自己就可以了; 如果Fragment B没有显示 则Activity A启动 Activity B(Activity B用来显示Fragment B);要在你的程序中使用这种设计模式,需要每个Fragment都相对独立. 下面有两个建议:
为了避免直接从一个Fragment中调用另外一个Fragment, 可以在每个Fragment中都声明一个回调接口,可以通过该接口把事件通知给该Fragment所在的Activity(该Activity实现回调接口),当Activity收到事件的时候 就根据Fragment的配置来触发不同的操作.例如 在上图所示的 &Activity A 中 ,当用户选择一个ListItem的时候的动作如下:
/** This is a callback that the list fragment (Fragment A) calls
when a list item is selected */
public void onItemSelected(int position) {
DisplayFragment fragB = (DisplayFragment) getFragmentManager()
.findFragmentById(R.id.display_frag);
if (fragB == null) {
// DisplayFragment (Fragment B) is not in the layout,
// start DisplayActivity (Activity B)
// and pass it the info about the selected item
Intent intent = new Intent(this, DisplayActivity.class);
intent.putExtra(&position&, position);
startActivity(intent);
// DisplayFragment (Fragment B) is in the layout, tell it to update
fragB.updateContent(position);
当DisplayActivity (Activity B) 启动的时候, 通过读取Intent中的数据来显示对应的内容.
如果 Fragment B 需要告诉 Fragment A 一个处理结果, 那么实现的逻辑是一样的, Fragment B 和 Activity B 通过回调接口来传递事件. 具体就是: Activity B 实现一个由 Fragment B 定义的回调接口.当 Activity B 收到事件,就设置结果然后关闭(finish)自己. Activity A &收到事件 然后通知 Fragment A.具体示例可以下载这个项目(&)来看看.对于 Action Bar的设计 可以参考 前面的一篇文章: &最后 就是不用忘记了测试下你的App, 看看其行为是否一致.当然了 在Ice Cream Sandwich SDK发布之前 你是没法测试小屏幕的, 但是这里偷偷的告诉你一个小窍门, 你可以在Honeycomb中通过屏幕方向来分别代表不同的屏幕尺寸. 例如&竖屏的时候 使用小屏幕的布局文件; 横屏的时候使用大屏幕的布局文件,&这样只要旋转下屏幕就可以测试~\(???)/~啦啦啦.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:94602次
积分:1419
积分:1419
排名:千里之外
原创:22篇
转载:112篇
评论:12条
(1)(2)(11)(22)(7)(23)(15)(28)(33)android4.0.3多点触摸屏设备设置-android100学习网
android4.0.3多点触摸屏设备设置
修改内核配置HID文件的步骤Device Drivers ---&HID Drivers ---&Specical HID drivers ---&&*&HID Multitouch panels同时将idc文件关掉,如果你的触摸屏比较高级的话,有内置驱动的话,把自带的驱动也屏......
修改内核配置HID文件的步骤
Device Drivers &---&
&&&&HID Drivers &---&
&&&&&&&&Specical HID drivers &---&
&&&&&&&&&&&&&*&HID Multitouch panels
同时将idc文件关掉,如果你的触摸屏比较高级的话,有内置驱动的话,把自带的驱动也屏蔽掉
例如我修改我们的产品就是在产品的root/文件夹下,对应的init.sun4i.rc,你可以去找你的产品的init.???.rc文件
然后找到你的触摸屏驱动#掉,如果单点的触摸屏,那么你可以在这添加上驱动,凡是要开发启动的驱动都可以在on boot &这个标签下添加!
还有一点其他的小说明:
你要在开发板上面看你的设备可以
#cat &/proc/bus/input/devices & &找找有没有touch的相关字眼,例如