2

我正在尝试在页面适配器内获取屏幕尺寸。我可以把它放进去MainActivity并将它传递给适配器,但最好把它拿到那里。我该怎么做,直接在适配器内部或内部instantiateItem

这是我的代码:

public class MyPagerAdapter extends PagerAdapter {
    Display display = getWindowManager().getDefaultDisplay(); // The method getWindowManager() is undefined for the type MyPagerAdapter
    display.getSize(size);
    ...
    }
4

4 回答 4

14

您快到了。你已经有一个context. 有了它,您可以检索WindowManager通过getSystemService(WINDOW_SERVICE)

WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
于 2013-01-10T21:59:32.060 回答
11

从任何上下文引用(例如在您的)中,您可以通过执行来获取对该类intantiateItem的引用DisplayMetrics

context.getResources().getDisplayMetrics()

它为您提供了对DisplayMetricsDisplayMetrics类的参考

对您特别有用的是 this 的widthPixelsheightPixels属性,它返回设备的原始像素高度和宽度。

于 2013-01-10T21:52:22.390 回答
3
public class MyPagerAdapter extends PagerAdapter {
    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
    int pxWidth = displayMetrics.widthPixels;
    float dpWidth = pxWidth / displayMetrics.density;
    int pxHeight = displayMetrics.heightPixels;
    float dpHeight = pxHeight / displayMetrics.density;
}
于 2016-10-21T14:47:15.160 回答
0

您可以使用 WindowManager 执行此操作

WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
于 2020-05-12T13:02:51.067 回答