Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在获取屏幕大小返回0_Android - Fatal编程技术网

Android 正在获取屏幕大小返回0

Android 正在获取屏幕大小返回0,android,Android,我正在尝试使用以下代码在模拟器(API 7)上获取屏幕大小: float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity; int width = (width / ((int) scaledDensity)) / 7; DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay(

我正在尝试使用以下代码在模拟器(API 7)上获取屏幕大小:

float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;
int width = (width / ((int) scaledDensity)) / 7;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
float scaleFactor = displaymetrics.density;
现在我尝试使用
scaledDensity

使用此代码:

float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;
int width = (width / ((int) scaledDensity)) / 7;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
float scaleFactor = displaymetrics.density;
我得到了这个例外

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tomer.workoutlog2/com.example.workoutlog.SimpleCalendarViewActivity}: java.lang.ArithmeticException: divide by zero
完整代码:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE))
                .getDefaultDisplay();
        int width = 0;

        if (android.os.Build.VERSION.SDK_INT >= 13) {
            Point size = new Point();
            display.getSize(size);
            width = size.x;

        } else
            width = display.getWidth();

        float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;

        width = (width / ((int) scaledDensity)) / 7;
在我的真实设备上,我没有得到这个错误。
也许,仿真器有问题吗?

对于API 7,您可以使用以下代码,它已从API 13中弃用

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
scaledDensity()返回一个浮点值。确定您没有意外地在浮点值小于1.0f的情况下进行整数除法?

请尝试以下代码:

float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;
int width = (width / ((int) scaledDensity)) / 7;
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
float scaleFactor = displaymetrics.density;
试试这个

DisplayMetrics displaymetrics = new DisplayMetrics();
            getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            int height = displaymetrics.heightPixels;
            int width = displaymetrics.widthPixels;

您可以通过以下代码获得scaleFactor:
float scaleFactor=displaymetrics.density