在Android中没有获得屏幕高度和宽度

时间:2013-05-24 08:34:12

标签: android screen-orientation

我同时使用“使用活动”或“没有活动”,在Android中没有获得高度和宽度。请更正我,我做错了什么。

此处有活动:

public class LandPort extends Activity{

    public final static int height = 0;
    public final static int width = 0;
    Context context;
    DisplayMetrics displaymetrics = new DisplayMetrics();


    public LandPort(Context context) {
        this.context = context;
    }

    public int getHeight() {

        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int height = displaymetrics.heightPixels;
        return height;
    }

    public int getWidth() {
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int width = displaymetrics.widthPixels;
        return width;
    }

}

在MainActivity中:

LandPort lp= new LandPort(getApplicationContext());
        int height = lp.getHeight();
        int width =lp.getWidth();

高度和宽度均为0;

另一个没有活动:

public class GetHeigthWidth {

    public final static int height = 0;
    public final static int widht = 0;
    Context context;
    WindowManager wm = (WindowManager) context
            .getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();

    public GetHeigthWidth(Context context) {
        this.context = context;
    }

    public int getHeight() {

        @SuppressWarnings("deprecation")
        int height = display.getHeight();
        return height;
    }

    public int getWidth() {
        @SuppressWarnings("deprecation")
        int widht = display.getWidth();
        return widht;
    }

}

来自MainActivty:

GetHeigthWidth ghw= new GetHeigthWidth(getApplicationContext());
        int height = ghw.getHeight();
        int width =ghw.getWidth();

Aslo得到 高度和宽度0。

那么,如何在此>

中获得实际高度和宽度

3 个答案:

答案 0 :(得分:0)

调用你的getHeight();

中的getWidth()内容
    int height;
    int width;
    ViewTreeObserver vto = view.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(globalListner);

    OnGlobalLayoutListener globalListner = new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
              height = view.getHeight();             
              widht = view.getWidth();
        }
    });

并且不要忘记在结尾删除该全局列表:)

答案 1 :(得分:0)

试试这个

@Override
public void onCreate(Bundle savedInstanceState) {       

    super.onCreate(savedInstanceState);     

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

    setContentView(R.layout.yourLayout);
}

您需要初始化您的活动。

更新

你需要这样做:

import android.content.Context;
import android.view.Display;
import android.view.WindowManager;

public class GetHeigthWidth {

    public final static int height = 0;
    public final static int widht = 0;
    Context context;
    WindowManager wm;
    Display display;

    public GetHeigthWidth(Context context) {
        this.context = context;

        wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        display = wm.getDefaultDisplay();
    }

    public int getHeight() {

        @SuppressWarnings("deprecation")
        int height = display.getHeight();
        return height;
    }

    public int getWidth() {
        @SuppressWarnings("deprecation")
        int widht = display.getWidth();
        return widht;
    }

}

答案 2 :(得分:0)

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