横竖屏切换,不重新加载activity
1、AndroidManifest.xml中配置activity
android:configChanges="orientation|keyboardHidden|screenSize"
android 3.2(api13)开始,screenSize也会随着横竖屏切换而变化。如果不想让你的activity重新加载,在android api 13和以上(minSdkVersion
和targetSdkVersion
声明的),你必须包含sreenSize在configChanges配置之中,如果你的targets api是12或者更低的版本,activity会自动处理这个变化(这个配置的变化不会重新启activity即使在3.2或更高的版本上)。
2、Activity重写onConfigurationChanged:
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); this.setRequestedOrientation(orientation); }
****************************************************************************************
代码切换横竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
****************************************************************************************
获取当前屏幕方向
int orient=getRequestedOrientation(); if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){ Log.d("orient", "now the screen orient is landscape"); }else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { Log.d("orient", "now the screen orient is portrait"); }
****************************************************************************************
获取屏幕分辨率
1、Display 的
getSize获取
:Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x;. int height = size.y;
如果不是在
Activity
中,你可以通过WINDOW_SERVICE获取默认的
Display
:WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay();
或者使用DisplayMetrics 获取
或者DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int nowWidth = dm.widthPixels; //当前分辨率 宽度 int nowHeigth = dm.heightPixels; //当前分辨率高度
DisplayMetrics dm =getResources().getDisplayMetrics(); int w_screen = dm.widthPixels; int h_screen = dm.heightPixels;
2、在
getSize
引入之前 (in API level 13),可以使用getWidth
和getHeight获取,现在已经废弃
:Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // deprecated int height = display.getHeight(); // deprecated
参考链接:
http://developer.android.com/guide/topics/resources/runtime-changes.html
http://stackoverflow.com/questions/1016896/how-to-get-screen-dimensions