2011-09-17 81 views
4

我必须为平板电脑和手机编写应用程序。这两个应用程序具有相同的功能,但它们具有绝对不同的GUI。手机和平板电脑上的不同GUI,但同样的应用程序

例如,手机在主屏幕上有2个按钮,但平板电脑将有5个,因为我们想使用我们有的空间。我知道,我能够定义不同的布局,取决于dpi,但我应该如何处理Activiies中的布局?我认为,使用if(sdkVersion> = 11)bla..bla ...不会通过孔代码和孔项目工作!这是我必须使用多个应用程序支持的情况吗?

readed文章: http://developer.android.com/guide/practices/screens_support.html

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

http://developer.android.com/guide/market/publishing/multiple-apks.html

我不`吨明白我应该如何处理这个问题......请如果你能帮助,THX

回答

5

把你的平板电脑布局在res/layout-large/。把你的手机布局放在res/layout/。将它们命名相同。您的活动将根据运行的设备加载正确的活动。当您拨打findViewById()来检索额外的按钮,并看到您收到null时,请忽略它们。

您可能需要更多的地方像布局res/layout-large-land/(山水平板电脑),res/layout-xlarge/(如果你想“比在5-9" 的东西片不同来处理10+范围内),res/layout-small/(如果你想处理< 3“屏幕)等等。

+0

Hello CommonsWare! 感谢您的评论,但”当您调用findViewById()来检索额外的按钮,并看到您返回null时,忽略它们。“是我想要的因为我们打算开始一个大型项目,并且有很多你认识的活动,并且总是做一个if(findViewById(R.id.btn7)== null)会使得代码变得不那么容易。寻找一个优雅的解决方案:) – Karoly

+1

@Kolyoly:“并且总是d如果(findViewById(R.id.btn7)== null)使得代码难以阅读,那么容易“ - 什么”总是“?使用称为“数据成员”的那些花哨的Java事物之一来容纳小部件或“boolean”。或者重新组织您的用户界面以利用片段,因此在每个活动使用一个片段的手机中,您的主要活动会加载一个可以显示两个片段的布局。 – CommonsWare

+0

,但我看到freakments自带API级别11.对于平板电脑,好吧,但如果我们想要在手机上运行应用程序(2.1,2.2.2.3)和talbet,我该如何使用fregments – Karoly

相关问题