0

如果 Android 设备的屏幕尺寸被认为很小(320dp x 426dp 单位),我需要在我的应用程序中禁用某个按钮。我目前正在使用:

if (activity.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
    //Is small size
} else {
    //Is not small size
}

确定设备的屏幕尺寸,但这似乎永远不会进入Configuration.SCREENLAYOUT_SIZE_SMALL. 我做了打印输出,发现该值实际上等于Configuration.SCREENLAYOUT_SIZE_NORMAL

亚历克斯洛克伍德在这里的答案:我如何在 android 中以编程方式获取 ScreenSize是我对此解决方案的参考,但正如 JRP 在他的回答中指出的那样,一切似乎都Configuration.SCREENLAYOUT_SIZE_NORMAL和我的一样。

如何可靠地定义设备的屏幕尺寸?我目前正在三星 Galaxy S3 上进行测试,无论如何这应该是一个“小型”设备。

提前致谢, Rei

4

4 回答 4

4

试试这个以像素显示尺寸

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

更多使用此StackQuestion

于 2013-07-10T10:38:49.850 回答
1

这里有两个函数来获取屏幕尺寸 W 和 H

    public static int getScreenSizeW(Context context) {
            int screenSizeW = 320;//default

            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            try {
                screenSizeW = DisplayMetrics.class.getField("widthPixels").getInt(displayMetrics);
            } catch (Exception e) {
            }

            return screenSizeW;
        }

public static int getScreenSizeH(Context context) {
            int screenSizeH = 480;//default

            DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
            try {
                screenSizeH = DisplayMetrics.class.getField("heightPixels").getInt(displayMetrics);
            } catch (Exception e) {
            }

            return screenSizeH;
        }

这是另一种获取显示尺寸的方法:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
size.x = display.getWidth();
size.y = display.getHeight();
于 2013-07-10T10:29:20.400 回答
1

试试这个代码..

int screenSize = getResources().getConfiguration().screenLayout &
        Configuration.SCREENLAYOUT_SIZE_MASK;

String toastMsg;
switch(screenSize) {
    case Configuration.SCREENLAYOUT_SIZE_LARGE:
        toastMsg = "Large screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_NORMAL:
        toastMsg = "Normal screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_SMALL:
        toastMsg = "Small screen";
        break;
    default:
        toastMsg = "Screen size is neither large, normal or small";
}
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();

也看看

于 2015-05-15T10:55:45.527 回答
0

使用下面的代码。

public boolean isPhone(Context activityContext) {

 if(null!=activityContext)
 {
  boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout &   Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
  boolean large = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);   
  return (xlarge || large)?false:true;
 }
return false;    
}
于 2013-07-10T10:22:11.670 回答