VIG*_*ESH 25 android android-layout
我的情况是手机和平板电脑的逻辑是相同的.但布局略有不同.我尝试使用以下代码
public static boolean findoutDeviceType(Context context)
{
return (context.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK)>=
Configuration.SCREENLAYOUT_SIZE_LARGE;
}
Run Code Online (Sandbox Code Playgroud)
三星Tab 10"的分辨率为1280*800,S3的分辨率为1270*720.此代码返回Tab和Phone的尺寸为XLarge,因为它的检查标准是> 960*720.
我已经测试了在Res作为布局,布局大和布局-xLarge的布局文件夹中插入相应的UI.但这无论如何都没有影响.检查时从Layout文件夹中获取了UI.
无论如何,即使我将UI放在不同的布局文件夹中,我也必须在类文件中检查它们以设置相应的ContentView.
有没有其他方法可以找到它?
edw*_*win 48
Android培训中讨论了此主题:
http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSWQuali
如果您阅读整个主题,他们将解释如何在特定值文件中设置布尔值(如res/values-sw600dp/):
<resources>
<bool name="isTablet">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
因为sw600dp限定符仅对android 3.2以上的平台有效.如果要确保此技术适用于所有平台(3.2之前),请在res/values-xlarge文件夹中创建相同的文件:
<resources>
<bool name="isTablet">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后,在"标准"值文件(as res/values/)中,将布尔值设置为false:
<resources>
<bool name="isTablet">false</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在您的活动中,您可以获取此值并检查您是否在平板电脑尺寸设备中运行:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
Run Code Online (Sandbox Code Playgroud)
这不是我的逻辑,Credit转向ol_v_er这个简单易行的方法.我只是复制了它.
你可以在 这里查看原始答案
一些额外的信息
您现在已标记指示您的应用程序是在手机还是平板电脑上运行.
我创建了两个包来处理UI及其功能,
com.phone
com.tablet
Run Code Online (Sandbox Code Playgroud)
并将控件重定向到所需的包
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
// do something
//Start activity for tablet
} else {
// do something else
//Start activity for phone
}
Run Code Online (Sandbox Code Playgroud)
注意:我认为10英寸和7英寸的屏幕应用程序都需要资源res/values-sw600dp/.但更具体一点,我认为我们可以使用10英寸平板电脑屏幕res/values-sw720dp/
<resources>
<bool name="isTablet">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
use*_*904 16
试试这个
public boolean isTablet(Context context) {
boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);
return (xlarge || large);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用平板电脑,它将返回true.已经在三星Galaxy Tab 7"和三星Galaxy S3上进行了检查.
| 归档时间: |
|
| 查看次数: |
23880 次 |
| 最近记录: |