GPHONE:android如何实现横屏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPHONE:android如何实现横屏相关的知识,希望对你有一定的参考价值。
要求程序一运行直接变成横屏状态
应该使用哪个函数
如图
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如何实现横屏的主要内容,如果未能解决你的问题,请参考以下文章