搜了搜网上介绍获取屏幕大小的方法,有如下
// 通过WindowManager获取
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
System.out.println("heigth : " + dm.heightPixels);
System.out.println("width : " + dm.widthPixels);
// 通过Resources获取
DisplayMetrics dm2 = getResources().getDisplayMetrics();
System.out.println("heigth2 : " + dm2.heightPixels);
System.out.println("width2 : " + dm2.widthPixels);
// 获取屏幕的默认分辨率
Display display = getWindowManager().getDefaultDisplay();
System.out.println("width-display :" + display.getWidth());
System.out.println("heigth-display :" + display.getHeight());
受getWidth方法启发,歪打正着找到另一种不引入其他包就能获取到屏幕大小的方法(适用于SurfaceView)
首先创建一个Activity
package com.example.mytest;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//显示自定义的SurfaceView视图
setContentView(new MyTest(this));
}
}
创建继承于 SurfaceView 的基类 MySurfaceView,在方法 surfaceCreated其中获取屏幕大小
protected int screenW, screenH;
/**
* SurfaceView视图创建,响应此函数
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
screenW = this.getWidth();
screenH = this.getHeight();
Log.v("222", "s ==Wh: "+screenH+","+screenW);
flag = true;
//实例线程
th = new Thread(this);
}
然后可以在继承于MySurfaceView的子类MyTest使用了
public void surfaceCreated(SurfaceHolder holder) {
super.surfaceCreated(holder);
Log.v("222", "myTest Wh: "+this.getWidth()+","+this.getHeight());
}
注意:无法直接在子类中通过
screenW = this.getWidth();
screenH = this.getHeight();
得到正确大小,必须在基类中才会正确