Android通用应用程式

前端之家收集整理的这篇文章主要介绍了Android通用应用程式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想开发一个通用的应用程序.我是新手这个方法.这意味着平板电脑和手机应用程序的一个单一的apk.我经历了

Support Library

Fragments

我的目标是在单个APK中为平板电脑和手机构建不同的用户界面.

我读过Getting Your App Ready for Jelly Bean and Nexus 7.这篇文章提到

res/layout/activity_home.xml

To take advantage of the extra space on the 7” screen you might provide an alternative layout:

res/layout-sw600dp/activity_home.xml

The sw600dp qualifier declares that these resources are for devices that have a screen with at least 600dp available on its smallest side. 

    Furthermore you might even provide a different layout for 10” tablets:

res/layout-sw720dp/activity_home.xml

这意味着我们可以为不同的设备使用不同的布局.这让我很困惑

编辑1 ::场景

假设

if my phone UI layout contains one-view pager and 

tablet UI layout contain two-view pager  .

我们该如何实现呢?在这篇文章中,它表示您设计不同的布局与不同的屏幕相同的名称,并保留对应的文件夹.但是,如果在手机中运行应用程序时尝试初始化平板电脑布局的小部件组件,我的疑问将会出现异常.

编辑2:
这个想法进入我的脑海里是确定我正在使用哪种类型的设备,即Tab或手机.

Determine if the device is a smartphone or tablet?

然后如果应用程序是手机,则避免小部件的初始化.有没有比这更好的方法

编辑3:
我的应用程序支持从2.3到更高版本

如果我的平板电脑配置与手机布局相比有其他小部件.我如何初始化和使用.希望都明白我的需要.所以请澄清我的疑问

解决方法

当我面对这个问题时,我创建了以下结构.
res/layout
res/layout-sw600dp

那么要区分价值等资源,

res/values
res/values-sw600dp
res/values-sw720dp

您注意到只有一个布局目录和两个值目录来指定边距和边距等资源.所以单个布局可以用于7“以及10”平板电脑.这是我的场景,你也可以定义layout-sw720dp.我这样做是因为减少了布局的编译时间.

我在手机和平​​板电脑上也有不同的布局.例如,我在第一个屏幕中有一个ListView,然后当用户单击项目时,它将打开其他活动,并且有DetailView.但在平板电脑中,我已经左侧的ListView和右侧的DetailView.

所以要这样做,在值/字符串中,我放置以下代码,

<bool name="isTablet">false</bool>

对于平板电脑的价值,sw600dp /字符串也是一样

<bool name="isTablet">true</bool>

现在,来编码的一部分.我有一个闪屏,它有一个共同的布局.所以会显示普通屏幕.但是当用户点击任何按钮时,它会检查是否是平板电脑.要检查,

boolean isTablet = getResources().getBoolean(R.bool.isTablet);

您现在已经标记了您的应用程序是在手机还是平板电脑上运行.

我已经创建了两个包,

com.phone
com.tablet

那么根据国旗,我直接把我的活动打包到手机包和平板电脑包.

例,

if(isTablet)
    startActivity(this,TabXYZ.class);
else
    startActivity(this,PhXYZ.class);

这种方法解决了我的问题.

猜你在找的Android相关文章