android---Android横竖屏切换

     ps:虽然现在的app一般都是固定一个屏幕方向,但是还是有必要了解下屏幕切换的方法和注意。

 一 固定横竖屏

     androidmainfest.xml中设置activoty属性:android:screenOration="land-space/portaie" (横向/竖向)

     

二 自动切换   

    1 androidmainfest.xml中设置activity属性:android:configChanges="orientation|screensize|keyboardHidden" (3.0以后需要同时设置screensize)

    ;由于横竖屏幕切换,activity会销毁,新建一个activity     

     注意:

     重建之前需要保存数据:onRetainNoNConfigurationInstance()
     onCreate中获取之前保存的数据getLastNoNConfigurationInstance()

     view相关,context上下文相关的无法保存 ,因为页面已经重新绘制了。

     

相关代码:
重写Activity.onRetainNonConfigurationInstance(),用户横竖屏切换前保存数据

@Override

public Object onRetainNonConfigurationInstance() {

final MyDataObject data = collectMyLoadedData();

return data;

}

在onCreate()函数中调用getLastNonConfigurationInstance(),获取onRetainNonConfigurationInstance()保存的数据

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

 

final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();

if (data == null) {

data = loadMyData();

}

...

}

 

 


    2  当然可以做到,横竖屏切换的时候,页面随着改动,而不是销毁

        后台代码实现activity的onConfigrationChanges()        

@Override

public void onConfigurationChanged (Configuration newConfig){

super.onConfigurationChanged(newConfig);

setContentView(R.layout.main);

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

findViews();

setListensers();

}

 


    注意:

    需要layout下设置同名的layout-land.xml 和layout-port.xml布局,其中控件的个数和名称都必须一样,横竖屏会自动匹配

    

    

    

 

posted @ 2015-08-09 15:56  JavAndroidJSql  阅读(282)  评论(0编辑  收藏  举报