react-native-device-detection 不适用于 Nexus 7
react-native-device-detection not working with Nexus 7
我创建了一个基于 React-Native 的 imageGallery 应用程序。
基本要求是
- 移动视图每行显示 3 张图像。
- 平板电脑视图每行显示 5 张图片。
使用 react-native-device-detection
完成设备检测
使用 Dimensions
对象限制每行的图像数量。
const Device = require('react-native-device-detection');
if(Device.isTablet) {
Object.assign(styles, {
image: {
width: Dimensions.get('window').width / 5 - 10 ,
height: Dimensions.get('window').width / 5 - 10,
}
});
}
if(Device.isPhone) {
Object.assign(styles, {
image: {
width: Dimensions.get('window').width / 3 - 10 ,
height: Dimensions.get('window').width / 3 - 10,
}
});
}
这在移动设备和模拟器 (Nexus 7) 中都运行良好。
使用 https://material.io/devices/ 检查。 Nexus 7 属于平板电脑。
Nexus 7 模拟器屏幕截图
Nexus 7 设备屏幕截图
但在设备(Nexus 7)中,它每行显示 3 张图像。(移动行为)。
如何解决这个问题?
Nexus 7 实际上是一个迷你 tablet as per manufacturer. react-native-device-detection identifies the device on the basis of their height/width and pixelDensity like this.
isPhoneOrTablet() {
if(this.pixelDensity < 2 && (this.adjustedWidth >= 1000 || this.adjustedHeight >= 1000)) {
this.isTablet = true;
this.isPhone = false;
} else if(this.pixelDensity === 2 && (this.adjustedWidth >= 1920 || this.adjustedHeight >= 1920)) {
this.isTablet = true;
this.isPhone = false;
} else {
this.isTablet = false;
this.isPhone = true;
}
}
如果设备有非正统尺寸,可能会出现错误信息,您可以添加自己的自定义计算以使其更准确。
我创建了一个基于 React-Native 的 imageGallery 应用程序。 基本要求是
- 移动视图每行显示 3 张图像。
- 平板电脑视图每行显示 5 张图片。
使用 react-native-device-detection
完成设备检测使用 Dimensions
对象限制每行的图像数量。
const Device = require('react-native-device-detection');
if(Device.isTablet) {
Object.assign(styles, {
image: {
width: Dimensions.get('window').width / 5 - 10 ,
height: Dimensions.get('window').width / 5 - 10,
}
});
}
if(Device.isPhone) {
Object.assign(styles, {
image: {
width: Dimensions.get('window').width / 3 - 10 ,
height: Dimensions.get('window').width / 3 - 10,
}
});
}
这在移动设备和模拟器 (Nexus 7) 中都运行良好。 使用 https://material.io/devices/ 检查。 Nexus 7 属于平板电脑。 Nexus 7 模拟器屏幕截图
Nexus 7 设备屏幕截图
如何解决这个问题?
Nexus 7 实际上是一个迷你 tablet as per manufacturer. react-native-device-detection identifies the device on the basis of their height/width and pixelDensity like this.
isPhoneOrTablet() {
if(this.pixelDensity < 2 && (this.adjustedWidth >= 1000 || this.adjustedHeight >= 1000)) {
this.isTablet = true;
this.isPhone = false;
} else if(this.pixelDensity === 2 && (this.adjustedWidth >= 1920 || this.adjustedHeight >= 1920)) {
this.isTablet = true;
this.isPhone = false;
} else {
this.isTablet = false;
this.isPhone = true;
}
}
如果设备有非正统尺寸,可能会出现错误信息,您可以添加自己的自定义计算以使其更准确。