如何获得 API>=19 的屏幕中间
How to get the middle of the screen for API>=19
单击时按钮应移动到屏幕中间。但是每次我在不同的设备上得到不同的按钮位置。而且我不知道该如何解决。
这段代码我用的是:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
float middleScreen = metrics.xdpi;
final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
animation.setDuration(3000);
animation.setFillAfter(true);
buttonToNextView.setAnimation(animation);
首先,DisplayMetrics.xdpi
给我们的是exact physical pixels per inch of the screen in the X dimension
,不是x-axis上的像素数。
因此,我们应该使用 widthPixels
和 heightPixels
的一半(基于屏幕方向)来实现 x-axis 上的屏幕中间。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
boolean isDisplayPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
float middleScreen = isDisplayPortrait ? metrics.widthPixels / 2 : metrics.heightPixels / 2;
final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
animation.setDuration(3000);
animation.setFillAfter(true);
buttonToNextView.setAnimation(animation);
请注意,要将按钮恰好放在屏幕中间,您需要从 middleScreen
值中减去其宽度的一半。
单击时按钮应移动到屏幕中间。但是每次我在不同的设备上得到不同的按钮位置。而且我不知道该如何解决。 这段代码我用的是:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
float middleScreen = metrics.xdpi;
final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
animation.setDuration(3000);
animation.setFillAfter(true);
buttonToNextView.setAnimation(animation);
首先,DisplayMetrics.xdpi
给我们的是exact physical pixels per inch of the screen in the X dimension
,不是x-axis上的像素数。
因此,我们应该使用 widthPixels
和 heightPixels
的一半(基于屏幕方向)来实现 x-axis 上的屏幕中间。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
boolean isDisplayPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
float middleScreen = isDisplayPortrait ? metrics.widthPixels / 2 : metrics.heightPixels / 2;
final TranslateAnimation animation = new TranslateAnimation(0, -middleScreen, 0, 0);
animation.setDuration(3000);
animation.setFillAfter(true);
buttonToNextView.setAnimation(animation);
请注意,要将按钮恰好放在屏幕中间,您需要从 middleScreen
值中减去其宽度的一半。