zoukankan      html  css  js  c++  java
  • android 屏幕切换

    1.将Activity固定位竖屏可以在配置文件这么写

    <activity android:screenOrientation="portrait">

    横屏显示:

    <activity android:screenOrientation="landscape">

    因为一个应用会有多个Activity, 可以根据需要去配置每个Activity的显示方式,如果不设置,默认是可以横竖屏切换的.

    2.在源码中设置横竖屏:

    设置竖屏:

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    设置横屏:

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSPACE);

    3.源码处理横竖屏切换事件

    首先在AndroidManifest.xml中对Activity注册android:configChanges="orientation" 属性,然后在对应的Activity源码中重写onConfigurationChanged(Configuration newConfig) 函数即可,这样处理后,当横竖屏切换时,就会响应Activity中的onConfigurationChange(),然后对横竖屏做判定处理就可以啦

    @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if(this.getResources().getConfiguration().orientation
                    ==Configuration.ORIENTATION_LANDSCAPE){
                Log.e("tag","当前屏幕切换成横屏显示");
            }else if(this.getResources().getConfiguration().orientation
                    ==Configuration.ORIENTATION_PORTRAIT){
                Log.e("tag","当前屏幕切换成竖屏显示");
            }
        }

    使用此方法不会再切换横竖屏时,Android默认重启当前Activity了. 另外屏幕切换时还会触发如下2个方法

     @Override
        public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
            super.onSaveInstanceState(outState, outPersistentState);
            Log.e("tag","保存数据操作");
        }
    
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            Log.e("tag","回复数据操作");
        }

    切换横竖屏时,会执行onSaveInstanceState(), 重启载入当前Activity时会执行onRestoreInstanceState(),可以用这2个函数进行屏幕切换时的数据处理.

  • 相关阅读:
    人们常说的带宽是什么意思?
    关注前端性能
    单测学习笔记
    基于 Istanbul 生成测试用例覆盖率报告
    如何做高水科研
    Human-like Controllable Image Captioning with Verb-specific Semantic Roles(具有动词语义角色的类人可控图像字幕生成)
    Netty应用程序的全部基本构建模块_netty学习笔记(2)-20210405
    异步和事件驱动_netty学习笔记(1)-20210330
    理解 cosocket(转)
    nginx lua阶段处理流程
  • 原文地址:https://www.cnblogs.com/android-zcq/p/6053392.html
Copyright © 2011-2022 走看看