android横竖切屏

1、默认配置

切换横竖屏执行onCreate(),重新加载。

2、切换时可以在onRetainNonConfigurationInstance保存数据 ,并在onCreate中 用getLastCustomNonConfigurationInstance();方法恢复数据。


@Override

protected void onCreate(Bundle savedInstanceState) {

Logger.d("onCreate");

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

UserDate userDate = (UserDate) getLastCustomNonConfigurationInstance();

if(userDate!=null)

Logger.i(userDate.toString());

else{

Logger.i("userDate == null");

}

}

@Override

public Object onRetainCustomNonConfigurationInstance() {

UserDate userDate = new UserDate();

Logger.i(userDate.toString());

return userDate;

}

3、不重启Activity

Andorid 3.2以前的SDK可以使用如下配置android:configChanges="orientation|keyboardHidden",而Adnroid 3.2以后的SDK必须添加screenSize属性,具体如下android:configChanges="keyboardHidden|orientation|screenSize"。然后在复写onConfigurationChanged(Configuration newConfig),这样每次切换时就不会执行onCreate,转而回调onConfigurationChanged方法

public void onConfigurationChanged(Configuration newConfig) {

int mCurrentOrientation = getResources().getConfiguration().orientation;

if( mCurrentOrientation == Configuration.ORIENTATION_PORTRAIT) {

// If current screen is portrait

setContentView(R.layout.mainP);

findViewsSetListensers();

}else if( mCurrentOrientation == Configuration.ORIENTATION_LANDSCAPE) {

//If current screen is landscape

setContentView(R.layout.mainL);

//注意,这里删除了init(),否则又初始化了,状态就丢失

findViewsSetListensers();

}

}

引用连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android开发中,大多APP可能根据实际情况直接将APP的界面方向设死了,或竖屏或横屏。但是,我们还是会遇到横...
    yoosir阅读 50,472评论 7 112
  • Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是有时候也不尽然,通常在设置里面我...
    Lost_Robot阅读 6,838评论 1 5
  • 以下是复制别人的文章过来的,目的是保留下这个方法,便于今后查阅使用,该文章不会用于任何商业用途,该文章的出处:ht...
    若兰幽竹阅读 8,539评论 0 3
  • Android横竖屏切换小结Android横竖屏切换小结(老样子,图片啥的详细文档,可以下载后观看 http://...
    4528283108ee阅读 2,673评论 0 1
  • 指针转向12点,躺在床上抱着手机追剧的你哈欠连连,一不留神没撑住,“啪”地一声,手机砸在你脸上,你一边揉着脸,一边...
    Dorineduan阅读 149评论 0 1