GPHONE:android如何实现横屏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPHONE:android如何实现横屏相关的知识,希望对你有一定的参考价值。

要求程序一运行直接变成横屏状态
应该使用哪个函数
如图

当屏幕变为横屏的时候,系统会重新呼叫当前Activity的OnCreate方法,你可以把以下方法放在你的OnCreate中来检查当前的方向,然后可以让你的SetContentView来载入不同的Layout xml.

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)

Log.i("info", "landscape");



else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)

Log.i("info", "portrait");



关于屏幕切换的时候
首先需要在androidmanifest.xml中加入配置
android:configChanges="orientation|keyboardHidden|navigation
这样在程序中. Activity就不会重复的调用onCreate()
甚至不会调用onPause.onResume.
只会调用一个onConfigurationChanged(Configuration newConfig)
这是在XML加入配置选项的前提下.

如果在就加入选项的前提下.如上所说. Activity会重新激活onCreate方法

根据你自己的需求来选择配置改变时的处理机制这样比较好一点。
参考技术A 这个是显示驱动的问题,有一个结构体,里面有yres和xres两个成员,定义的屏幕的宽度和高度。android是开源的,愿意研究就去下载一个看看源码,修改一下显示驱动,重新编译一下内核

Android 布局旋转 横屏竖屏

Android 屏幕旋转 横屏竖屏

横屏 竖屏

方法一:
*注意在setContentView()之前

if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏
            //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏

方案二:

在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数:
“unspecified”:默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
“landscape”:横屏显示(宽比高要长)
“portrait”:竖屏显示(高比宽要长)
“user”:用户当前首选的方向
“behind”:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
“sensor”:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
“nosensor”:忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。

布局旋转

		DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);      // 获取屏幕的尺寸
        int width = displayMetrics.widthPixels;                         // 屏幕宽
        int height = displayMetrics.heightPixels;                       // 屏幕高

        LinearLayout layout = (LinearLayout) findViewById(R.id.layout_horizontal);  // 待旋转布局
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(height, width);
        layout.setLayoutParams(layoutParams);       // 设置布局的宽和高,必须要和屏幕的反过来
        layout.setRotation(90);             // 顺时针旋转90度
        layout.setY((height - width) / 2);
        layout.setX((width - height) / 2);  // 将布局位移到屏幕中心

以上是关于GPHONE:android如何实现横屏的主要内容,如果未能解决你的问题,请参考以下文章

Android开发中如何强制横屏和强制竖屏设置

如何设置android界面横屏显示

android 中如何设置一个程序 一运行就是 横屏 是一开始启动 就横屏 不是按快捷键

Android 11 设置开机默认系统横屏显示

Android 4.0 ,如何截屏,当竖屏时。

Android如何设置应用强制横屏或竖屏