0

这个问题的答案对我来说可能太高级了,但我还是想试一试。我能够在一个方法中确定和设置屏幕大小的值,但它没有该方法之外的范围。我的问题是,我如何在整个班级内赋予它范围?也在整个项目里面?谢谢。这是我用来确定屏幕尺寸的方法,但它只适用于单一方法:

    DisplayMetrics metrics = this.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

谢谢!

4

3 回答 3

1

我的问题是,我如何在整个班级内赋予它范围?也在整个项目里面?

如果您只想设置一次这些值,那么扩展Application类可能是一个好的开始。

public class MyApplication extends Application {
    private Point mDimensions;

    @Override public void onCreate() {
        // this will only get run on app startup
        DisplayMetrics metrics = this.getResources().getDisplayMetrics();
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
        mDimensions = new Point(width, height);
    }

    public int getWidth() {
        return mDimensions.x;
    }

    public int getHeight() {
        return mDimensions.y;
    }
}

要访问 getter 方法,android:name请在项目清单中的应用程序标记上设置属性:

<application android:name="com.myname.MyApplication" ... ></application>

然后,您可以转换 any 的结果getApplication()getApplicationContext()调用MyApplication和调用方法;例如

int width = ((MyApplication) getApplication()).getWidth(); 

请注意,由于宽度和高度值仅初始化一次,因此它们不会在屏幕方向更改时更改。如果你也想考虑到这一点,一个简单的 util 方法接受一个上下文实例(可以是一个Activityor Service)可能是一个更直接的解决方案。

public static Point getDimensions(Context context) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    return new Point(width, height);
}
于 2012-12-18T20:48:19.160 回答
0

并用方法返回结果,你可以使方法公开,或者使用任何getter方法。

于 2012-12-18T20:28:44.923 回答
0

在您的方法中声明int widthand int height,然后将它们更改为 nessecary。要从不同的方法访问它们,只需将它们声明为公共的,例如public int width

或者,如果您要将它们设为私有,那么您可以使用 getter 和 setter 方法。

于 2012-12-18T21:26:45.130 回答