精华内容
下载资源
问答
  • 锁定Activity方向

    2016-07-06 09:32:14
    实现Activity反向的锁定非常简单: 在AndroidMenifest.xml文件中用静态声明给每个Activity的元素加上android:screenOrientation属性。 常用属性值如下: portrait:竖屏,即我们通常使用手机的状态,此时手机只有这...

     实现Activity反向的锁定非常简单:


    在AndroidMenifest.xml文件中用静态声明给每个Activity的元素加上android:screenOrientation属性。

    常用属性值如下:

    portrait:竖屏,即我们通常使用手机的状态,此时手机只有这一种显示方向,无论如何颠倒手机的方向,手机的屏幕显示都不会有改变。

    landscape:横屏,手机垂直摆放时,显示方向朝向设备的右侧,此时手机只有这一种显示方向。无论如何颠倒手机的方向,手机的屏幕显示都不会有改变。

    sensorPortrait:竖屏,相比较portrait,比其多一种显示方向,即当手机垂直摆放上下颠倒时,显示都是正常的。

    sensorLandscape:横屏,相比较landscape,比其多一种显示方向,即当手机横向摆放上下颠倒时,显示都是正常的。

    behind:屏幕方向与Activity栈中前一个Activity的方向保持一致。

    展开全文
  • 最近用到了视频组件,需要设置...在AndroidManifest.xml中静态声明设置Activity方向参数:android:screenOrientation="portrait" //设置竖屏 android:screenOrientation="landscape"//横屏 android:screenOrientation=

    最近用到了视频组件,需要设置横竖屏,所以现在把基础知识再梳理一下.

    最简单的一句话搞横竖屏:
    在AndroidManifest.xml中静态声明设置Activity的方向参数:

    android:screenOrientation="portrait" //设置竖屏
    android:screenOrientation="landscape"//横屏
    android:screenOrientation="sensor"//根据传感器
    android:screenOrientation="behind"//根据栈中前一个Activity方向保持一致
    //还有更多,不常用,不过可以看出Android横竖屏切换搞出这么属性.还是很强大的;
    /*
         * The preferred screen orientation this activity would like to run in.
         * From the {@link android.R.attr#screenOrientation} attribute, one of
         * {@link #SCREEN_ORIENTATION_UNSPECIFIED},
         * {@link #SCREEN_ORIENTATION_LANDSCAPE},
         * {@link #SCREEN_ORIENTATION_PORTRAIT},
         * {@link #SCREEN_ORIENTATION_USER},
         * {@link #SCREEN_ORIENTATION_BEHIND},
         * {@link #SCREEN_ORIENTATION_SENSOR},
         * {@link #SCREEN_ORIENTATION_NOSENSOR},
         * {@link #SCREEN_ORIENTATION_SENSOR_LANDSCAPE},
         * {@link #SCREEN_ORIENTATION_SENSOR_PORTRAIT},
         * {@link #SCREEN_ORIENTATION_REVERSE_LANDSCAPE},
         * {@link #SCREEN_ORIENTATION_REVERSE_PORTRAIT},
         * {@link #SCREEN_ORIENTATION_FULL_SENSOR},
         * {@link #SCREEN_ORIENTATION_USER_LANDSCAPE},
         * {@link #SCREEN_ORIENTATION_USER_PORTRAIT},
         * {@link #SCREEN_ORIENTATION_FULL_USER},
         * {@link #SCREEN_ORIENTATION_LOCKED},
         */

    上述代码,需要在activity 标签上使用

    <activity
                android:name=".MainActivity"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@style/AppTheme.NoActionBar">
    
            </activity>

    或者使用Java代码设置:

    //获取设备当前方向
    int currentO = getResources().getConfiguration().orientation;
    //强制设置为横屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    //强制设置竖屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);

    需要注意是切换屏幕,不会保持默认的Activity的生命周期,发生变化时,Activity会被销毁重新创建.这通常会损失应用的性能,因此需要先保持UI状态,然后重建Activity.
    解决这个重建问题需要
    在AndroidManifest.xml 给Activity设置

    android:configChanges="orientation|keyboardHidden"

    orientation参数注册了设备方向变动的事件, keyboardHidden为键盘事件,需要一并设置,否则Activity也可能会在这些事件上导致重建.

    一次从竖屏-横屏-竖屏的生命周期变化如下:

    11-07 22:58:55.364 11537-11537/...MainActivity: onCreate
    11-07 22:58:55.364 11537-11537/...MainActivity: onResume()
    11-07 22:59:00.364 11537-11537/...MainActivity: onPause()
    11-07 22:59:00.374 11537-11537/...MainActivity: onStop
    11-07 22:59:00.374 11537-11537/...MainActivity: onDestroy()
    11-07 22:59:00.484 11537-11537/...MainActivity: onCreate
    11-07 22:59:00.494 11537-11537/...MainActivity: onResume()
    11-07 22:59:04.154 11537-11537/...MainActivity: onPause()
    11-07 22:59:04.154 11537-11537/...MainActivity: onStop
    11-07 22:59:04.154 11537-11537/...MainActivity: onDestroy()
    11-07 22:59:04.224 11537-11537/...MainActivity: onCreate
    11-07 22:59:04.224 11537-11537/...MainActivity: onResume()

    因此,我们需要在配置发生变化时,保存必要地数据,然后重新加载视图资源;
    类似下面的伪代码:

    @Override
    protected void onCreate(Bundle b){
        super.onCreate(b);
        loadView();
    }
    ...
    @Override
    public void onConfigurationChanged(Configuration newConfig){
        super.onConfigurationChanged(newConfig);
        saveState();
        loadView(); 
    }
    
    public void saveState(){} //保存必要数据
    public void loadView(){
        setContentView(R.layout.main);
        //根据新的变化,处理其他必要地UI改动
        //恢复和保存的状态
    
    }

    写了这么多,但是Google说不建议这样使用…网上也很多方法说这么设置;
    但是按照上述设置,我试过,我发现Acitvity的生命周期onConfigurationChanged并未调用;⊙﹏⊙b汗


    后记:
    至此困扰我将近两天的问题,Activity_A竖屏跳转Activity_B横屏,再finsh回到A,则A发生重建,为了不让A创建.用尽了网上千篇一律的解决方法都没有解决,
    如果把xml的设置. 设置成

    android:configChanges="orientation|screenSize"

    然后,再看看看横竖屏切换时,Activity的生命周期变化:

    11-07 23:18:17.104 ......MainActivity: onCreate
    11-07 23:18:17.104 ......MainActivity: onResume()
    11-07 23:18:21.704 ......MainActivity: onConfigurationChanged:2
    11-07 23:18:26.134 ......MainActivity: onConfigurationChanged:1
    11-07 23:18:28.884 ......MainActivity: onConfigurationChanged:2
    11-07 23:18:33.184 ......MainActivity: onConfigurationChanged:1

    从实践的数据(机型:Mi3Cmiui7)由此看见,Activity并没有发生,不需要那么麻烦手动保存数据什么的.
    没想到一个参数就搞定了.
    另外,
    如果是为了在发生横竖屏切换时,Ui需要重新布局,则可添加横屏竖屏的xml布局,如res/layout-land;这样Android会寻找其目录下的资源;
    重要的参数再说一遍:

    android:configChanges="orientation|screenSize|keyboardHidden"
    展开全文
  • 这个问题之所以出现,是因为android框架希望用户自己控制应用程序的方向,因此不建议限制应用程序的方向--例如,如果用户想在横向定位中使用应用程序,他只需翻转设备,传感器就可以完成这项工作,但当开发人员限制...

    它只影响AndroidStudio 3.6+

    这里有什么问题?这个问题之所以出现,是因为android框架希望用户自己控制应用程序的方向,因此不建议限制应用程序的方向--例如,如果用户想在横向定位中使用应用程序,他只需翻转设备,传感器就可以完成这项工作,但当开发人员限制屏幕方向时,即使旋转传感器工作,应用程序也会保持预定义状态,这在某种程度上限制了用户的设备功能。

     

    Expecting 'android:screenOrientation="unspecified"' or '"fullSensor"' for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices

    1、android studio 升级了3.6.1之后,发现各方面的体验都要好,速度很快。

    2、但出现了一些小问题,比如android:screenOrientation="unspecified"' or '"fullSensor"

    如果只支持纵向的话,那么这样一设,会出现问题。

    3、解决:

     

    展开全文
  • Expecting 'android:screenOrientation="unspecified"' or '"fullSensor"' for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices ...

    Expecting 'android:screenOrientation="unspecified"' or '"fullSensor"' for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices

    这里有什么问题?这个问题之所以出现,是因为android框架希望用户自己控制应用程序的方向,因此不建议限制应用程序的方向--例如,如果用户想在横向定位中使用应用程序,他只需翻转设备,传感器就可以完成这项工作,但当开发人员限制屏幕方向时,即使旋转传感器工作,应用程序也会保持预定义状态,这在某种程度上限制了用户的设备功能。

    解决:

    AndroidStudio->File->Settings->搜索Chrome,然后将Activity is locked to an orientation的勾选去掉

    然后确定保存,如果保存完毕后还提示,重启下AS就可以了。

     

    展开全文
  • Activity方向可以通过 public class MainActivity extends Activity implements OnClickListener { private Button mBtn; @Override protected void onCreate(Bundle savedInstanceState) { super....
  • Android 设置Activity屏幕方向

    万次阅读 2018-05-29 15:10:12
    假设不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性。他有下面几个參数: “unspecified”:默认值 由系统来推断显示方向....
  • Android 如何控制Activity启动方向

    千次阅读 2019-03-07 15:20:58
    android:screenOrientation 属性 今天review代码的时候,发现项目中大量使用到 android:...众所周知,Android应用程序中,android:screenOrientation用于控制activity启动时方向,取值可以为: unspe...
  • 本文主要对如何控制Android中Activity运行时屏幕方向与显示方式进行详细全面的实例讲解。具有很好的参考价值,需要的朋友一起来看下吧
  • Activity

    2016-09-15 22:30:01
    Activity的跳转 Activity的生命周期 Activity的启动模式 Activity方向与样式 Activity的状态的保存 系统Activity的跳转
  • 通过读取网络服务器文件数字大小,来决定activity跳转方向,适配ANDROID9.0,读取网络采用HTTP协议,由于网络延迟等不确定因素,采用线程读取。
  • Activity之间切换(跳转)方向

    千次阅读 2016-04-18 12:08:44
    Activity 之间的切换方向有多种,默认的切换方向是从右边到左边。下面介绍其它方向: 从右边向左边切换: Intent intent = new Intent(); intent.setClass(ActivityOne.this, ActivityTwo.class); start...
  • Activity在屏幕中的方向

    千次阅读 2016-04-21 22:58:41
    android:screenOrientation="behind"表示当前的Activity和栈中在它下方的Activity使用相同的方向。 好吧就是这么简单,干了这瓶成长快乐。。。既然写到这儿了,就把android:screenOrientation都
  • Activity运行时的屏幕方向
  • 获取Activity当前屏幕方向

    千次阅读 2020-05-03 22:52:09
    设置屏幕方向,然后判断是否生效。 方法一(无效) WindowManager mgr = ((WindowManager)this.getApplicationContext().getSystemService(Context.WINDOW_SERVICE)); int lastOrientation = mgr....
  • 如何改变Activity的显示方向

    千次阅读 2012-04-18 14:06:35
    本示例演示如何通过Activity了的setRequestedOrientation()方法来设定Activity的显示方向。 本示例在Eclipse上编译测试。 1. 定义清单文件(AndroidManifest.xml) xml version="1.0" encoding="utf-8"?> ...
  • Android Activity屏幕旋转方向完全控制

    千次阅读 2016-11-17 17:06:10
    我们知道,系统提供了android:configChanges="orientation" 清单文件属性以监听...比如典型的应用场景:视频播放器的屏幕方向锁功能。 下面贡献屏幕旋转完全控制类ActivityRotationController,解决一切屏幕旋转问题。
  • 项目有个弹出式的activity 当背景设置透明,并且设置activity方向时,在模拟器上跑起来没有问题 ,,但是在真机上会报这个Only fullscreen opaque activities can request orientation错误,将透明的activity方向取消...
  • Activity在屏幕当中显示的方向。screenOrientation属性值可以是下表中列出的一个值: (在AndroidManifest中对应的activity配置中设置) Value 说明 “unspecified” 默认值,由系统来选择方向。它的使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,196
精华内容 28,478
关键字:

activity方向