日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

《Android编程权威指南》-读书笔记(七) -处理旋转设备

發(fā)布時間:2025/3/15 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Android编程权威指南》-读书笔记(七) -处理旋转设备 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《Android編程權威指南》-讀書筆記(七)

-處理旋轉(zhuǎn)設備

?

旋轉(zhuǎn)設備會改變設備配置(device configuration)。設備配置是用來描述設備當前狀態(tài)的一系列特征。這些特征包括:屏幕的方向、屏幕的密度、屏幕的尺寸、鍵盤類型、底座模式以及語言,等等。

?

通常,為匹配不同的設備配置,應用會提供不同的備選資源。比如說不同的圖標資源,全新的布局文件。

?

在運行時配置變更(runtime configuration change)發(fā)生時,很拗口,就是可以自動加載新的資源文件,新的布局文件的意思。

?

本章目標:

  • 創(chuàng)建水平模式布局
  • 設備旋轉(zhuǎn)前保存數(shù)據(jù)

?

在上一章中http://www.cnblogs.com/canglin/p/4357585.html 我們使用Log分析了activity的生命周期,并且發(fā)現(xiàn)了旋轉(zhuǎn)設備后,實際上是重新構造了一遍activity。在本章中,將會利用此特性在旋轉(zhuǎn)后,選擇新的圖片資源以及布局結構。

?

創(chuàng)建水平模式布局

我們首先創(chuàng)建一個適合在旋轉(zhuǎn)后顯示的布局。

旋轉(zhuǎn)后的layout文件在res/layout-land下,創(chuàng)建方法是右鍵layout->New->Layout resource file

?

文件名還是activity_quiz,目錄名稱改為layout-land。Root slement 我這里設置為了FrameLayout這里其實填寫什么都沒有關系,到了文件里面可以隨時改,因為這個是旋轉(zhuǎn)后的主要的控件變化不大,大可以從原來的文件中吧代碼復制過來,然后在吧LinearLayout改成FrameLayout。點擊確認后,文件顯示為如下:

我是從Visual studio轉(zhuǎn)過來的,這樣的文件結構妥妥了看了半天才弄明白。

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

?

設備旋轉(zhuǎn)前保存數(shù)據(jù)

運行剛才的應用后,發(fā)現(xiàn)問題會回到初始狀態(tài)。也就是沒有保存程序的運行數(shù)據(jù)。現(xiàn)在把數(shù)據(jù)保存起來。

?

通過覆蓋onSaveInstanceState()方法,將一些數(shù)據(jù)保存在Bundle中,然后在onCreate()方法中取回這些數(shù)據(jù)。在本例中通過重寫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

?

轉(zhuǎn)載于:https://www.cnblogs.com/canglin/p/4358067.html

總結

以上是生活随笔為你收集整理的《Android编程权威指南》-读书笔记(七) -处理旋转设备的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。