《Android编程权威指南》-读书笔记(七) -处理旋转设备
《Android编程权威指南》-读书笔记(七)
-处理旋转设备
旋转设备会改变设备配置(device configuration)。设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向、屏幕的密度、屏幕的尺寸、键盘类型、底座模式以及语言,等等。
通常,为匹配不同的设备配置,应用会提供不同的备选资源。比如说不同的图标资源,全新的布局文件。
在运行时配置变更(runtime configuration change)发生时,很拗口,就是可以自动加载新的资源文件,新的布局文件的意思。
本章目标:
- 创建水平模式布局
- 设备旋转前保存数据
在上一章中http://www.cnblogs.com/canglin/p/4357585.html 我们使用Log分析了activity的生命周期,并且发现了旋转设备后,实际上是重新构造了一遍activity。在本章中,将会利用此特性在旋转后,选择新的图片资源以及布局结构。
创建水平模式布局
我们首先创建一个适合在旋转后显示的布局。
旋转后的layout文件在res/layout-land下,创建方法是右键layout->New->Layout resource file
文件名还是activity_quiz,目录名称改为layout-land。Root slement 我这里设置为了FrameLayout这里其实填写什么都没有关系,到了文件里面可以随时改,因为这个是旋转后的主要的控件变化不大,大可以从原来的文件中吧代码复制过来,然后在吧LinearLayout改成FrameLayout。点击确认后,文件显示为如下:
我是从Visual studio转过来的,这样的文件结构妥妥了看了半天才弄明白。
Layout-land是不会显示在文件结构里的。只是以文件activity_quiz(land)的形式显示了出来。这一点与Visual studio是有很大的不同的。
FrameLayout是一种最简单的ViewGroup组件,它不以特定方式安排其子视图的位置。FrameLayout子视图的位置排列都是由它们各自的android:layout_gravity属性决定的。
大概的样子如上图所示。App/src/mian/res/layout-land/activity_quiz.xml的代码如下:
http://git.oschina.net/canglin/GeoQuiz/commit/7df94925c856b155b9cddcaed5af097d7a605d55
设备旋转前保存数据
运行刚才的应用后,发现问题会回到初始状态。也就是没有保存程序的运行数据。现在把数据保存起来。
通过覆盖onSaveInstanceState()方法,将一些数据保存在Bundle中,然后在onCreate()方法中取回这些数据。在本例中通过重写onSaveInstanceState()方法将mCurrentIndex变量的值存到KEY_INDEX常量所定义的键值里。在onCreate(Bundle savedInstanceState)方法中,我们这样来获取mCurrentIndex的值
if(savedInstanceState != null) {
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX,mCurrentIndex);
}
通过重写onSaveInstanceState()来写入值
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG,"onSaveInstanceState");
savedInstanceState.putint(KEY_INDEX,mCurrentIndex);
}
代码如下:
http://git.oschina.net/canglin/GeoQuiz/commit/34b65ab4f15ac39611edc025030eeee4a362accb
转载于:https://www.cnblogs.com/canglin/p/4358067.html
《Android编程权威指南》-读书笔记(七) -处理旋转设备相关推荐
- android开发读书笔记,android开发权威指南读书笔记
第17章 Fragment 1.在res目录下增加 layout-sw600dp 目录,用于存放7英寸及以上尺寸屏幕的布局文件.10英寸以上平板用 sw720dp.如果是更小的屏幕,如 480*800 ...
- HTML5权威指南----读书笔记
<!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...
- android编程权威指南(第2版)的PhotoGallery项目的练习
最近在看<<android编程权威指南(第2版)>>这本书,里面有一个叫PhotoGallery的项目,需要用到Flickr的储存图片功能, 但是Flickr不能访问,所以我修 ...
- android编程权威指南 的PhotoGallery项目Flickr 不能访问的替代解决方法
android编程权威指南 的PhotoGallery项目Flickr 不能访问的替代解决方法 参考: <<android编程权威指南(第2版)>>的PhotoGallery项 ...
- 《Android编程权威指南》PhotoGallery应用梳理
PhotoGalley是<Android编程权威指南>书中另外一个重要的应用. github:https://github.com/xurui1995/PhotoGaller ...
- mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...
MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...
- android程序设计activity,《Android编程权威指南》之第二个activity
继续继续!<Android编程权威指南>第五章,Demo比较简单,总结重点吧. 本章节知识点的Demo很有意思,就是添加个acitivity,方便用户偷看当前问题的答案. 创建第二个act ...
- Android编程权威指南.第3版.pdf
Android编程权威指南.第3版.pdf 分享给大家. 下载链接 转载于:https://blog.51cto.com/4456998/2360887
- MongoDB权威指南读书笔记——CRUD
插入并保存文档 插入是向MongoDB中添加数据的基本方法.可以使用Insert方法向目标集合插入一个文档:db.foo.insert({"bar" : "baz&quo ...
最新文章
- 小米扫地机器人 自动关机_小米扫地机器人1S 真的好用吗?
- 2021年要关注这5个开源Kubernetes项目
- SCCM 2012 R2实战系列之三:独立主站点部署
- *args,**kwargs的使用方法
- CTreeCtrl的用法
- linux进程管理命令实验,实验2Linux进程管理.doc
- mysql-普通查询(General Query)慢查询(Slow Query)相关日志配置
- 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
- react 组件构建_让我们用100行JavaScript构建一个React Chat Room组件
- 全链路跟踪对比,skywalking、zipkin等
- 生产系统建模仿真软件FactorySimulation
- ArcGIS的ArcMap的Mxd格式符号转换为Geoserver style的sld格式
- 服务器没有网卡驱动怎么看网卡型号,[怎么看网卡设备]怎么查看网卡驱动
- windows无法格式化u盘_如何解决u盘0字节无法格式化的问题
- notepad集成jsonviewer 查看json
- 百度地图坐标转成腾讯地图坐标
- Docker复习07——Docker 网络
- 第2章 计算机图形系统概述
- python 实例 cadu_求CAD实例
- 复现lio_sam激光slam算法创建点云地图
热门文章
- Apache的简单应用
- 配置System Center Data Protection Manager 2007
- Careers support for Masters students cambridge
- how to request a curl operation from alibaba cloud
- ‘xxfile' Missing the class attribute 'ExtensionOfNativeClass'
- 认识了一个新的手机游戏剖析工具- SnapDragon Profiler
- 《http权威指南》阅读笔记(十二)
- 安装JDK时提示 IllegalArgumentException:Invalid characters in hostname的解决方法
- 云呼叫中心系统: 引领企业通信产业下一春
- springboot(七):springboot+mybatis多数据源最简解决方案