Android: Showing wrong screen resolution

前端 未结 6 992
说谎
说谎 2020-11-29 10:19

I was trying to get the screen resolution of android phones,using this code

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDi         


        
相关标签:
6条回答
  • 2020-11-29 10:50

    This seems to be working..though i dont know if its a right method..

    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    
    density=dm.densityDpi; 
    width=(density/160)*dm.widthPixels; 
    height=(density/160)*dm.heightPixels;
    
    0 讨论(0)
  • 2020-11-29 10:56

    Finally after 2 days of searching and testing, i finally managed to find out what's the real issue here.. All those above coding will give correct resolution. But the most important this is that we need to mention the target SDK in the manifest file.. Otherwise it will give wrong result if the density is more than 1.

    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
    

    need to set the targetSDK version from anything between 4-9.. Hope this will help some one in future facing the same issue.

    0 讨论(0)
  • 2020-11-29 10:59

    Disable pre-scaling by adding this line to your manifest file:

    <supports-screens android:anyDensity="true" />
    

    Position:

    <?xml version="1.0" encoding="utf-8"?>
    
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="...."
      android:versionCode="1"
      android:versionName="1.0">
    
    <supports-screens android:anyDensity="true" />
    
    <application android:label="@string/app_name" >
    ...
    

    After that your display will not be scaled anymore, and you also get the correct display resolution.

    0 讨论(0)
  • 2020-11-29 11:12

    try this..

     Display display = getWindowManager().getDefaultDisplay();
    int ScreenHeight = display.getHeight();
    int ScreenWidth = display.getWidth();
    
    0 讨论(0)
  • 2020-11-29 11:16

    Try to use this:

    width = getResources().getDisplayMetrics().widthPixels;
    height = getResources().getDisplayMetrics().heightPixels;
    

    Seems like you're getting the pixel after division of the density ( 1.5 ) of Galaxy S.

    480 / 1.5 = 320
    799.5 / 1.5 = 533
    

    Edit:

    density = getResources().getDisplayMetrics().density;
    
    0 讨论(0)
  • 2020-11-29 11:16

    Here is how i did it:

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

    When not in an Activity:

    WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    

    Before getSize was introduced (in API level 13), you could use the getWidth and getHeight methods that are now deprecated:

    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();  // deprecated
    int height = display.getHeight();  // deprecated
    
    0 讨论(0)
提交回复
热议问题