在android中获取正确的屏幕尺寸

时间:2016-07-01 05:51:28

标签: android

DisplayMetrics dm = new DisplayMetrics();  
getWindowManager().getDefaultDisplay().getMetrics(dm);  
int width = dm.widthPixels; //320 dip  
int height = dm.heightPixels;  

我已尝试过此代码,但这无法正常使用。

3 个答案:

答案 0 :(得分:1)

<img ng-src="{{image['small-size'].url || image.thumb}}">

以及活动之外:

int width | height = getResources().getDisplayMetrics().widthPixels | heightPixels

答案 1 :(得分:0)

如果您想在所有设备上播放所有设备的密度,请尝试此操作。

     import android.content.Context;
     import android.content.res.Configuration;
     import android.util.DisplayMetrics;

     public class DensitySizePlay{




    public static int FunctionCall(Context context) {
    int value = 12;
    String str = "";
    if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "small-ldpi";
            value = 10;

        case DisplayMetrics.DENSITY_MEDIUM:
            str = "small-mdpi";
            value = 10;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "small-hdpi";
            value = 10;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "small-xhdpi";
            value = 10;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "small-xxhdpi";
            value = 10;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "small-xxxhdpi";
            value = 10;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "small-tvdpi";
            value = 10;
            break;
        default:
            str = "small-unknown";
            value = 10;
            break;
        }

    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "normal-ldpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "normal-mdpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "normal-hdpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "normal-xhdpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "normal-xxhdpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "normal-xxxhdpi";
            value = 11;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "normal-tvdpi";
            value = 11;
            break;
        default:
            str = "normal-unknown";
            value = 11;
            break;
        }
    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "large-ldpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "large-mdpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "large-hdpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "large-xhdpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "large-xxhdpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "large-xxxhdpi";
            value = 12;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "large-tvdpi";
            value = 12;
            break;
        default:
            str = "large-unknown";
            value = 12;
            break;
        }

    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "xlarge-ldpi";
            value = 14;

            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "xlarge-mdpi";
            value = 14;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "xlarge-hdpi";
            value = 14;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "xlarge-xhdpi";
            value = 14;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "xlarge-xxhdpi";
            value = 14;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "xlarge-xxxhdpi";
            value = 14;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "xlarge-tvdpi";
            value = 14;
            break;
        default:
            str = "xlarge-unknown";
            value = 14;
            break;
        }
    }


    return value;
    }

    public static int TextviewBig(Context context) {
    int value = 15;
    String str = "";
    if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "small-ldpi";
            value = 22;

        case DisplayMetrics.DENSITY_MEDIUM:
            str = "small-mdpi";
            value = 22;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "small-hdpi";
            value = 22;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "small-xhdpi";
            value = 22;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "small-xxhdpi";
            value = 22;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "small-xxxhdpi";
            value = 22;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "small-tvdpi";
            value = 22;
            break;
        default:
            str = "small-unknown";
            value = 22;
            break;
        }

    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "normal-ldpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "normal-mdpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "normal-hdpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "normal-xhdpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "normal-xxhdpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "normal-xxxhdpi";
            value = 24;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "normal-tvdpi";
            value = 24;
            break;
        default:
            str = "normal-unknown";
            value = 24;
            break;
        }
    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "large-ldpi";
            value = 27;
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "large-mdpi";
            value = 26;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "large-hdpi";
            value = 27;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "large-xhdpi";
            value = 27;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "large-xxhdpi";
            value = 27;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "large-xxxhdpi";
            value = 27;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "large-tvdpi";
            value = 27;
            break;
        default:
            str = "large-unknown";
            value = 27;
            break;
        }

    } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
        switch (context.getResources().getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            str = "xlarge-ldpi";
            value = 30;

            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            str = "xlarge-mdpi";
            value = 30;
            break;
        case DisplayMetrics.DENSITY_HIGH:
            str = "xlarge-hdpi";
            value = 30;
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            str = "xlarge-xhdpi";
            value = 30;
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            str = "xlarge-xxhdpi";
            value = 30;
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            str = "xlarge-xxxhdpi";
            value = 30;
            break;
        case DisplayMetrics.DENSITY_TV:
            str = "xlarge-tvdpi";
            value = 30;
            break;
        default:
            str = "xlarge-unknown";
            value = 30;
            break;
        }
    }


    return value;
    }

  }

答案 2 :(得分:0)

希望这可能会有所帮助。

DisplayMetrics metrics=getResources().getDisplayMetrics();
float screenWidth = metrics.widthPixels / metrics.density;
float screenHeight = metrics.heightPixels / metrics.density;
float dpi=metrics.density;

Configuration configuration=getApplicationContext().getResources().getConfiguration();
int screenWidthInDp = configuration.screenWidthDp;
int smallestScreenWidthInDp = configuration.smallestScreenWidthDp;