android 屏幕旋转流程,android自动屏幕旋转流程分析.doc
android自动屏幕旋转流程分析.doc
android自动屏幕旋转流程分析
在android设置(Settings)中我们可以看到显示(display)下有一个自动屏幕旋转的checkbox,
如果我们勾选checkbox的话当你手机屏幕就会根据重量自动旋转,那么我们就分析一下这个过程:
在Display_settings.xml文件中我们可以找到:
这是选项框的布局,然后我们到package/app/settings/src/com/android/Settings中的DiaplaySettings.java中去找,
在onCreate方法中,我们发现没有,也没有亮度调节(这个就是博客中自动调节屏幕亮度所讲),不要急,我没继续找,发现在onPreferenceTreeClick方法中有它的影子,
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mAccelerometer) { Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, mAccelerometer.isChecked() ? 1 : 0); } return true; }
将选中后值设为1,而在updateState方法中:
mAccelerometer.setChecked(Settings.System.getInt( getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) != 0);
意思就是当我们勾选了之后就将1存到(adb shell 进入)/data/data/viders.settings/databases/settings.db数据库下的system表中:accelerometer_rotation|1。
自动旋转和自动调节屏幕亮度一样是用一个observe来监测数据库中的数据是否发生变化,它在PhoneWindownManager.java中会有
ContentResolver resolver = mContext.getContentResolver();
.......
resolver.registerContentObserver(Settings.System.getUriFor( Settings.System.ACCELEROMETER_ROTATION), false, this);
........
然后就会在PhoneWindownManager.java中的updateSettings()方法中更新:
nt accelerometerDefault = Settings.System.getInt(resolver, Settings.System.ACCELEROMETER_ROTATION, DEFAULT_ACCELEROMETER_ROTATION); if (mAccelerometerDefault != accelerometerDefault) { mAccelerometerDefault = accelerometerDefault; updateOrientationListenerLp(); }
如果accelerometerDefault不等于mAccelerometerDefault也就是不等于0,也就是等于1时,就updateOrientationListenerLp()
在 updateOrientationListenerLp()方法中会调用mOrientationListener.enable(),找到enable方法,实在WindowOrientationListener.ja
android 屏幕旋转流程,android自动屏幕旋转流程分析.doc相关推荐
- android禁止屏幕自动旋转_如何禁止屏幕翻转
Android 版需要修改 AndroidManifest.xml 文件,在文件中找到 android:screenOrientation 属性,原值应该是 user,修改成 portrait 就是锁 ...
- android设置自动旋转屏幕,android怎样实现关闭系统自动旋转屏幕时能够自动横竖屏...
android 系统关闭系统自动旋转屏幕情况下利用设备感应器(方向传感器)实现横竖屏切换 2.SensorManager sm=(SensorManager)getSystemService(SENS ...
- android 获取屏幕旋转方向,android获取手机屏幕尺寸和旋转方向
布局文件main.xml: android:layout_width="fill_parent" android:layout_height="fill_parent&q ...
- Android屏幕旋转,android实战项目实例
ActivityInfo.SCREEN_ORIENTATION_FULL_USER //根据用户选择旋转方向,可以让屏幕旋转180度,和传感器那个很像 sensor 由物理感应器决定显示方向,它取决于 ...
- Android运行时动态全屏以及旋转屏幕时不重新装载
Android运行时动态全屏以及旋转屏幕时不重新装载 最近要做一视频播放器,在横屏时需要用到全屏播放,在网络上搜索"android 全屏",查到的文章全是如何设置全屏,通过them ...
- android+相机画面旋转,Android:相机预览的屏幕方向/旋转
我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法: Android – Camera preview is side ...
- android屏幕适配流程,Android屏幕适配姿势
GitHub地址 为什么要屏幕适配? device_framentation.png 统计 碎片化 品牌机型碎片化 屏幕尺寸碎片化 操作系统碎片化 为了保证用户获得一致的用户体验效果,使得某一元素在A ...
- android屏幕唤醒函数,android学习笔记 按电源键屏幕唤醒和屏幕睡眠流程(从上层到kernel)...
一. 屏幕的唤醒 首先inputread在读取到有keyboard事件上报后,会调用到keydispatch的notifykey,去询问wm是否会对这次按键特殊处理,如果WM不处理,则此处会点亮或者熄 ...
- java软件屏幕大小转换,android 用java写一个自动适配各种屏幕大小的工具
android 用java写一个自动适配各种屏幕大小的工具,假设我当前机器屏幕宽高为1920*1116,我页面某个组件的宽度为100px,那么在1280*800的机器上,按道理将应该是100/1920 ...
最新文章
- linux更改程序启动时间,分享|如何改善应用程序在 Linux 中的启动时间
- 内蒙古公安原创扫黑除恶主题MV《以警之名》全国首发
- Docker教程-使用
- [Array]217.Contains Duplicate
- cvtcolor python opencv_二值分析 | OpenCV + skimage如何提取中心线
- Java11 新特性
- NYOJ题目 263 精挑细选
- mysql 终端 远程访问,通过终端连接到远程mysql
- Python - 装饰器
- 设置eclipse自动生成的author等注释
- 10 SystemVerilog语言编写SPI发送
- linux v4l2进行视频采集编程介绍
- 关于AD中如何绘制原理图及其封装
- 使用telnet和ssh登录linux
- libusb读取鼠标数据
- maven的资源过滤filters
- 湖南省工信厅党组书记、厅长雷绍业一行莅临麒麟信安调研
- 还在用Excel做报表?建议你试试这个数据填报系统_光点科技
- IPv6邻居发现协议添加默认路由
- BigDecimal如何保留小数位
热门文章
- python小白应该看什么书_小白学python看什么书
- jwt token注销_退出登录时怎样实现JWT Token失效?
- 2017.10.22 诸神眷顾的幻想乡 失败总结
- 2017.6.21 大都市meg 思考记录
- 【英语学习】【Level 08】U05 Better option L4 Being social
- 导数与微分的知识点思维导图_高中生物思维导图知识点总结
- python打开csv文件绘制折线图,[转载]python绘制简单折线图
- python嵌入shell代码_小白进!嵌入式开发如何快速入门?
- vue 如何处理两个组件异步问题_Vue异步组件使用详解
- c语言窗口最大化,使用SDL处理最大化的窗口