《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编程权威指南》-读书笔记(七) -处理旋转设备相关推荐

  1. android开发读书笔记,android开发权威指南读书笔记

    第17章 Fragment 1.在res目录下增加 layout-sw600dp 目录,用于存放7英寸及以上尺寸屏幕的布局文件.10英寸以上平板用 sw720dp.如果是更小的屏幕,如 480*800 ...

  2. HTML5权威指南----读书笔记

    <!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...

  3. android编程权威指南(第2版)的PhotoGallery项目的练习

    最近在看<<android编程权威指南(第2版)>>这本书,里面有一个叫PhotoGallery的项目,需要用到Flickr的储存图片功能, 但是Flickr不能访问,所以我修 ...

  4. android编程权威指南 的PhotoGallery项目Flickr 不能访问的替代解决方法

    android编程权威指南 的PhotoGallery项目Flickr 不能访问的替代解决方法 参考: <<android编程权威指南(第2版)>>的PhotoGallery项 ...

  5. 《Android编程权威指南》PhotoGallery应用梳理

    PhotoGalley是<Android编程权威指南>书中另外一个重要的应用.        github:https://github.com/xurui1995/PhotoGaller ...

  6. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

  7. android程序设计activity,《Android编程权威指南》之第二个activity

    继续继续!<Android编程权威指南>第五章,Demo比较简单,总结重点吧. 本章节知识点的Demo很有意思,就是添加个acitivity,方便用户偷看当前问题的答案. 创建第二个act ...

  8. Android编程权威指南.第3版.pdf

    Android编程权威指南.第3版.pdf 分享给大家. 下载链接 转载于:https://blog.51cto.com/4456998/2360887

  9. MongoDB权威指南读书笔记——CRUD

    插入并保存文档 插入是向MongoDB中添加数据的基本方法.可以使用Insert方法向目标集合插入一个文档:db.foo.insert({"bar" : "baz&quo ...

最新文章

  1. 小米扫地机器人 自动关机_小米扫地机器人1S 真的好用吗?
  2. 2021年要关注这5个开源Kubernetes项目
  3. SCCM 2012 R2实战系列之三:独立主站点部署
  4. *args,**kwargs的使用方法
  5. CTreeCtrl的用法
  6. linux进程管理命令实验,实验2Linux进程管理.doc
  7. mysql-普通查询(General Query)慢查询(Slow Query)相关日志配置
  8. 怎样格式化电脑_硬盘数据销毁最安全的步骤是怎样的?有公司可以做吗
  9. react 组件构建_让我们用100行JavaScript构建一个React Chat Room组件
  10. 全链路跟踪对比,skywalking、zipkin等
  11. 生产系统建模仿真软件FactorySimulation
  12. ArcGIS的ArcMap的Mxd格式符号转换为Geoserver style的sld格式
  13. 服务器没有网卡驱动怎么看网卡型号,[怎么看网卡设备]怎么查看网卡驱动
  14. windows无法格式化u盘_如何解决u盘0字节无法格式化的问题
  15. notepad集成jsonviewer 查看json
  16. 百度地图坐标转成腾讯地图坐标
  17. Docker复习07——Docker 网络
  18. 第2章 计算机图形系统概述
  19. python 实例 cadu_求CAD实例
  20. 复现lio_sam激光slam算法创建点云地图

热门文章

  1. Apache的简单应用
  2. 配置System Center Data Protection Manager 2007
  3. Careers support for Masters students cambridge
  4. how to request a curl operation from alibaba cloud
  5. ‘xxfile' Missing the class attribute 'ExtensionOfNativeClass'
  6. 认识了一个新的手机游戏剖析工具- SnapDragon Profiler
  7. 《http权威指南》阅读笔记(十二)
  8. 安装JDK时提示 IllegalArgumentException:Invalid characters in hostname的解决方法
  9. 云呼叫中心系统: 引领企业通信产业下一春
  10. springboot(七):springboot+mybatis多数据源最简解决方案