Android横竖屏最佳实践

根据我自己的一些了解,对横竖屏有下面几种尝试

值得一提的是判断横竖屏,网上一般有两种方式
方式一

	int orientation = getRequestOrientation();
	if( orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ){
		//处理横屏模式
	} else if( orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ){
		//处理竖屏模式
	}

不知道是什么原因,反正我在我的电脑上这种方式不得行,这种方式我就直接没有载考虑了
方式二:

	int orientation = getResources().getConfiguration().orientation;
	if( orientation == Configuration.ORIENTATION_PORTRAIT ){
		//处理竖屏模式
	} else if( orientation == Configuration.ORIENTATION_LANDSCAPE ){
		//处理横屏模式
	}

方法一: 新建一个layout-land

  • 方法:res右键new,新建一个Android Resource Package,名称一般写成layout-land,Resource type选择layout。这样然后如果你想要一个活动(这个活动绑定的layout中的xml文件是a.xml)的横屏展示,就在layout-land中新建一个相同名字的a.xml,然后在这里编写横屏的界面。
  • 注:这种方法很简单,也相对很容易实现,但是这种方式的话有一个很大的问题,就是涉及到页面的重新加载,如下图在这里插入图片描述
    这样就造成了资源的浪费,而且数据如果多的话体验也不会好。

方法二:重写onConfigurationChanged()方法(推荐)

  • 方法:在AndroidManifest中你想要的实现横竖屏的活动下面使用onConfigChanges,如下:
<activity
   android:name=".MainActivity"
   android:configChanges="keyboardHidden|orientation|screenSize">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />

       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

这样在横竖屏切换的时候页面就不会重新加载,然后在MainActivity(你想要横竖屏切换的活动中重写onConfigurationChanged()方法,判断横竖屏来加载不同的布局,如下:

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        int orientation = getResources().getConfiguration().orientation;
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
        	//竖屏处理
            Log.d(TAG, "--这是竖屏模式");
            setContentView(R.layout.activity_main);
        } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
        	//横屏处理
            Log.d(TAG, "--这是横屏模式");
            setContentView(R.layout.activity_main_land)}
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章