zoukankan      html  css  js  c++  java
  • 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布局,其中控件的个数和名称都必须一样,横竖屏会自动匹配

        

        

        

  • 相关阅读:
    750. 角矩形的数量(动态规划)
    Python中with标签的使用详解
    GraalVM
    spring 源码解析(二) 2.下载源码,及错误的排除。
    spring 源码解析(一) spring的架构
    词典
    java日志框架 (五)
    java日志框架 (四) 日志相关
    java日志框架 (三) 日志框架使用 之 SLF4J + Log4j2
    java日志框架 (二) 日志框架使用 之 SLF4J + logback
  • 原文地址:https://www.cnblogs.com/softwarelanguagebs/p/4715285.html
Copyright © 2011-2022 走看看