android判断pad还是手机
2013-11-06 13:42
274 查看
第一种。
这种要在onCreate走完之后才可以获取。而且不适合设置全屏的项目。
第二种。
这种除了个别厂商做得特别恶心的设备,都可以判断。
第三种。
简单解释下:在res不同的values下创建不同的screen.xml,这样在不同的设备上取出的String值就不同了,这种比较好用,除了三星某超大屏机器。。。
第四种。
和第二种类似,通过屏幕分辨率和像素密度,(貌似)判断的更细一些。。。。
第五种。
这种除了某些pad可以打电话的(貌似不少),都可以。。。
大概这几个比较可行,没有太好的方案暂时,求讨论求指导。。。。
Rect frame = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); if (frame.top == 0) { //tablet } else { //phone }
这种要在onCreate走完之后才可以获取。而且不适合设置全屏的项目。
第二种。
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); }
这种除了个别厂商做得特别恶心的设备,都可以判断。
第三种。
File res/values/screen.xml (assuming res/layout/ contains your layout files for handsets) <?xml version="1.0" encoding="utf-8"?> <resources> <string name="screen_type">phone</string> </resources> File res/values-sw600dp/screen.xml (assuming res/layout-sw600dp/ contains your layout files for small tablets like the Nexus 7) <?xml version="1.0" encoding="utf-8"?> <resources> <string name="screen_type">7-inch-tablet</string> </resources> File res/values-sw720dp/screen.xml (assuming res/layout-sw720dp/ contains your layout files for large tablets like the Nexus 10): <?xml version="1.0" encoding="utf-8"?> <resources> <string name="screen_type">10-inch-tablet</string> </resources>
简单解释下:在res不同的values下创建不同的screen.xml,这样在不同的设备上取出的String值就不同了,这种比较好用,除了三星某超大屏机器。。。
第四种。
/** * Checks if the device is a tablet or a phone * * @param activityContext * The Activity Context. * @return Returns true if the device is a Tablet */ public static boolean isTabletDevice(Context activityContext) { // Verifies if the Generalized Size of the device is XLARGE to be // considered a Tablet boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE); // If XLarge, checks if the Generalized Density is at least MDPI // (160dpi) if (xlarge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); // MDPI=160, DEFAULT=160, DENSITY_HIGH=240, DENSITY_MEDIUM=160, // DENSITY_TV=213, DENSITY_XHIGH=320 if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { // Yes, this is a tablet! return true; } } // No, this is not a tablet! return false; }
和第二种类似,通过屏幕分辨率和像素密度,(貌似)判断的更细一些。。。。
第五种。
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); if(manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE){ return "Tablet"; }else{ return "Mobile"; }
这种除了某些pad可以打电话的(貌似不少),都可以。。。
大概这几个比较可行,没有太好的方案暂时,求讨论求指导。。。。
相关文章推荐
- android开发教程之判断是手机还是平板的方法
- Android 判断当前设备是手机还是平板
- 判断agent(是电脑还是手机,是Android还是IOS)
- android手机网络状态监听,判断手机连接的是移动网络还是wifi等
- Android判断用户是平板还是手机的方法
- android--如何判断是平板还是手机?
- 加载页面时,判断是安卓手机(android),还是苹果系列(iPhone,iPad,ios)
- 如何判断Android设备是手机还是平板?
- JS判断请求来自Android手机还是iPhone手机,根据不同的手机跳转到不同的链接。
- Android - 判断Android设备是手机还是平板?
- PHP判断手机是IOS还是Android,判断是否是微信打开
- js判断手机系统是android还是ios
- Android 判断当前设备是手机还是平板
- PHP判断手机是IOS还是Android
- Android:判断当前网络是WIFI还是手机网络
- Android 如何判断手机处于电源充电状态还是USB连接状态?
- Android中 判断是平板还是手机
- js判断手机端(Android手机还是iPhone手机)
- 如何判断Android设备是手机还是平板?
- Android中如何判断是手机还是平板