要确定设备类型(即手机或平板电脑),Determine if the device is a smartphone or tablet? “isTablet”是保存设备类型的变量。 要在java类中动态更改图标:
if(isTablet){
// apply tablet icon
}else{
//apply phone icon
}
但是,如果我有两组图标(一组用于手机,另一组用于尺寸大于手机图标的平板电脑)那么,如何使用if-else语句动态设置图标?
答案 0 :(得分:1)
编辑:
您想要使用平板电脑和智能手机的特定设置。在这种情况下,您不能只使用屏幕密度,因为它并不总是只与屏幕尺寸相关。
检查此问题并回答如何确定它是平板电脑还是智能手机:Determine if the device is a smartphone or tablet?
您不需要在任何设备屏幕上手动更改图标,它会自动选择合适的密度。
您的图标应该有多种尺寸,每个屏幕密度一个,但它们必须位于密度文件夹中。
您会注意到您的应用包含以drawable-
开头的文件夹,例如drawable-xhdpi
。这些是密度(xhdpi等)。您可以找到每种尺寸on the documentation的规格。 为您的图标生成每个尺寸并放入这些文件夹,即可完成。
启动器图标也应放在这样的文件夹中,但理想情况下应放在" mipmap-xhdpi"和相关的文件夹。您可以查看this answer,其中包含有关mipmap和drawable文件夹的详细信息。
答案 1 :(得分:0)
不幸的是,你不能以编程方式执行此操作。
但是,您可以将drawable放在一个文件夹数组中,以获得(接近)您想要的效果。
屏幕尺寸由它们的尺寸和像素密度定义,这为您提供了一些看起来像这样的选项:
抽拉-大HDPI, 提拉 - XLARGE,华电国际, 提拉 - 大xhdpi, 提拉 - XLARGE-xhdpi, 等...
例如,nexus 7平板电脑被认为是大型hdpi设备。相比之下,手机可能被认为是普通的mdpi设备。
可在此处找到广泛的屏幕指标列表:https://material.io/devices/
您也可以参考支持多种屏幕尺寸的文档:https://developer.android.com/guide/practices/screens_support.html
答案 2 :(得分:0)
在我看来,问题不应该是“用户是手机还是平板电脑”,因为这隐藏了真正的问题:“设备上的用户是否足够大,我应该显示不同的用户界面?”
通常认为,任何宽度至少为600dp(最短尺寸)的设备都是用于这些目的的“平板电脑”。事实证明,Android资源框架使得在这些情况下使用不同的drawable非常容易。
您可能已经将图标拆分为不同的分辨率:
/res/drawable-mdpi/icon.png
/res/drawable-xhdpi/icon.png
etc
使用相同的模式,但为“平板电脑”版本添加sw600dp
限定符:
/res/drawable-sw600dp-mdpi/icon.png
/res/drawable-sw600dp-xhdpi/icon.png
etc
现在根本不需要编写任何Java代码。如果您有<ImageView>
标记指定android:src="@drawable/icon"
,它会自动在较小的屏幕上使用“手机”版本,并在任何至少600dp宽的屏幕上使用“平板电脑”版本。