久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Android屏幕旋轉之橫屏豎屏切換的實現

剛實現了App內手機橫/豎放置時,屏幕橫/豎屏的切換。記錄一下中間需要的關鍵信息和實現過程。

成都創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站制作、成都做網站、外貿營銷網站建設、察哈爾右翼后網絡推廣、微信小程序定制開發、察哈爾右翼后網絡營銷、察哈爾右翼后企業策劃、察哈爾右翼后品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯為所有大學生創業者提供察哈爾右翼后建站搭建服務,24小時服務熱線:13518219792,官方網址:www.js-pz168.com

開門見山的說,實現屏幕自動/手動旋轉的方式有兩種:

一種是在工程的代碼中定義,這種方式在橫豎屏切換時執行的操作是:銷毀當前Activity–根據新的屏幕尺寸重建Activity。如果不進行數據存儲的操作,在切換的過程中Activity中的數據會丟失。

另一種是在工程的AndroidManifest.xml中定義,這種定義的方式在某些情況下可以實現“不銷毀需要橫豎屏的Activity”,因為這種方式不會銷毀Activity后重建Activity,因此Activity的數據不會丟失。

接下來分別介紹這兩種實現方式:

方式一:代碼中定義

在需要橫屏的Activity中的onCreate方法內添加如下語句,并且要求該語句位于onCreate方法內setContentView(**)語句之前。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

上條語句中,常數SCREEN_ORIENTATION_FULL_SENSOR是決定屏幕如何旋轉的參數。總結所有的參數對應的功能:

參數功能
SCREEN_ORIENTATION_BEHIND繼承Activity堆棧中當前Activity下面的那個Activity的方向
SCREEN_ORIENTATION_FULL_SENSOR由重力傳感器決定0/90/180/270°
SCREEN_ORIENTATION_FULL_USER
SCREEN_ORIENTATION_LANDSCAPE始終橫屏
SCREEN_ORIENTATION_PORTRAIT始終豎屏
SCREEN_ORIENTATION_LOCKED鎖定屏幕方向
SCREEN_ORIENTATION_NOSENSOR關閉重力傳感器對橫/豎屏的影響
SCREEN_ORIENTATION_REVERSE_LANDSCAPE另一個方向的橫屏
SCREEN_ORIENTATION_REVERSE_PORTRAIT另一個方向的豎屏(倒拿手機)
SCREEN_ORIENTATION_SENSOR重力傳感器影響屏幕的方向0/90/270°
SCREEN_ORIENTATION_SENSOR_LANDSCAPE始終橫屏,由重力傳感器決定是哪個方向的橫屏
SCREEN_ORIENTATION_SENSOR_PORTRAIT始終豎屏,由重力傳感器決定是哪個方向的豎屏
SCREEN_ORIENTATION_UNSPECIFIED不指定方向,使用默認方向
SCREEN_ORIENTATION_USER由用戶和重力傳感器共同決定,詳見文本末端
SCREEN_ORIENTATION_USER_LANDSCAPE用戶和重力傳感器共同決定是哪個方向的橫屏
SCREEN_ORIENTATION_USER_PORTRAIT用戶和重力傳感器共同決定是哪個方向的豎屏
UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW當屏幕較窄時導航欄有一部分會顯示在底部

 由于該方式下橫/豎屏切換時,對應的Activity的數據會丟失,可以在對應的Activity中重寫如下兩個方法,來保證數據不丟失:

@Override
protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  //橫豎屏切換前調用,保存用戶想要保存的數據,以下是樣例
  outState.putString("name","yoosir"); 
  outState.putInt("age",24); 
  outState.putBoolean("handsome",true);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // 屏幕切換完畢后調用用戶存儲的數據,以下為樣例:
  if(savedInstanceState != null) { 
    int age = savedInstanceState.getInt("age"); 
    String name = savedInstanceState.getString("name"); 
    boolean isHandsome = savedInstanceState.getBoolean("handsome");
  }
}

方式二:在AndroidManifest.xml中定義

在AndroidManifest.xml中對應的Activity屬性定義中配置android:configChanges和screenOrientation。參考的文章中在android:configChanges的配置說的很清楚,我直接把結論貼出來:

android:configChanges="orientation|keyboardHidden|screenSize"
  • 配置configChanges為以上配置時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法。Activity中的數據不會被銷毀。
  • 不配置configChanges或配置configChanges為非以上配置時,切屏會重新調用當前Activity的各個生命周期。Activity中的數據會被銷毀。

給出示例代碼如下:

<activity android:name=".com.cdsn.SearchActivity"
  ... ...
  android:screenOrientation="sensor"
  android:configChanges="keyboardHidden|orientation|screenSize"
      />

上述代碼中的android:screenOrientation所有可能的參數配置如下 。

描述
unspecified默認值。系統自動選擇屏幕方向
behind跟activity堆棧中的下面一個activity的方向一致
landscape橫屏方向,顯示的寬比高長
portrait豎屏方向,顯示的高比寬長
sensor由設備的物理方向傳感器決定,如果用戶旋轉設備,這屏幕就會橫豎屏切換
nosensor忽略物理方向傳感器,這樣就不會隨著用戶旋轉設備而橫豎屏切換了(”unspecified”設置除外)
user用戶當前首選的方向
reverseLandscapeAPI 9 以上,反向橫屏
reversePortraitAPI 9 以上,反向豎屏
sensorLandscapeAPI 9 以上,橫屏,但是可以根據 物理方向傳感器來切換正反向橫屏
sensorPortraitAPI 9 以上,豎屏,但是可以根據 物理方向傳感器來切換正反向豎屏
fullSensorAPI 9 以上,上下左右四個方向,由物理方向傳感器決定
lockedAPI 18 以上,鎖死當前屏幕的方向

上述代碼中的android:configChanges所有可能的參數配置如下:

描述
mccIMSI移動臺的國家代碼(MCC)發生變化——一個SIM被探測到并且更新MCC
mncIMSI移動臺的網絡代碼(MNC)發生變化——一個SIM被探測到并且更新MNC
locale區域發生變化——用戶選擇了一個文本需要顯示的新語言
keyboard鍵盤類型發生變化——例如:用戶插入了外接鍵盤。
keyboardHidden鍵盤的可訪問性發生變化——例如:用戶發現了硬件鍵盤。
screenLayout屏幕布局發生變化——這個會導致顯示不同的Activity。
orientation屏幕方向發生變化——用戶旋轉了屏幕。注意:如果應用程序的目標API級別是13或更高(通過屬性minSdkVersion和屬性targetSdkVersion聲明),你也需要聲明配置項screenSize,因為這將在設備選擇肖像和屏幕方向時發生改變。
screenSize當前可用屏幕大小發生變化。這代表一個當前可用大小的變化,和當前的比率相關,因此當用戶選擇不同的畫面和圖像,會發生變化。然而,如果你的程序目標API級別是12或更低,你的Activity總是會自己處理這個配置變化(這個變化不會引起Activity的重啟,甚至在Android 3.2或更新的設備上)。在API級別13里加入的。
smallestScreenSize物理屏幕大小的變化。不管方向的變化,僅僅在實際物理屏幕打包變化的時候,如:外接顯示器。這個配置項的變化引起在smallestWidth configuration里的變化。然而,如果你的程序目標API級別是12或更低,你的Activity將自己處理這個變化(這個變化不會引起Activity的重啟,甚至在Android 3.2或更新的設備上)在API級別13里加入的。
layoutDirection布局方向變化。例如書寫方式從左向右(LTR)轉換為從右向左(RTL)

配置了以上屬性之后,進行橫豎屏切換的Activity的數據不會丟失,如果想根據不同的屏幕方向來展示不同UI或做不同的事,需要在該Activity中重寫以下方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  // 在這里添加屏幕切換后的操作
}

番外

我按照上述方法,根據重力傳感器實現了屏幕旋轉,雖然可以做到屏幕隨重力傳感器切換,但是發現:無論手機設置中“屏幕旋轉”或“方向鎖定”是開是關,App內的Activity都會隨著手機的橫豎方向切換橫豎屏。我想要實現的是當打開“屏幕旋轉”時,App內的Activity跟隨重力感應器;當關閉“屏幕旋轉”時,App內的Activity固定為默認方向。如何做到關閉重力傳感器時,App亦關閉屏幕自動旋轉?

android:screenOrientation="sensor"

改上述代碼為以下代碼

android:screenOrientation="user"

意即:當參數為sensor時,無論是否關閉“屏幕旋轉”設置,App內的特定Activity都會根據重力傳感器改變橫豎屏。
當參數為user時,當“屏幕旋轉”開啟,則特定Activity根據根據重力傳感器改變橫豎屏;當“屏幕旋轉”關閉,則特定Activity會固定位默認方向(一般為正面豎屏)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。

當前標題:Android屏幕旋轉之橫屏豎屏切換的實現
文章轉載:http://www.js-pz168.com/article44/iggjhe.html

成都網站建設公司_創新互聯,為您提供企業建站軟件開發企業網站制作面包屑導航網站內鏈網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
动漫精品视频| 欧美午夜片在线观看| 欧美日韩精品一区视频| 久久精品在线免费观看| 一区二区三区久久久| 国产一区视频网站| 国产福利久久精品| 色综合视频一区二区三区高清| 日韩免费看的电影| 亚洲一区二区三区美女| 国产精品夜夜嗨| 欧美激情论坛| 欧美高清激情brazzers| 亚洲欧洲成人精品av97| 狠狠色狠狠色综合| 激情伦成人综合小说| 欧美影院午夜播放| 亚洲国产精品99久久久久久久久| 视频一区欧美精品| 91传媒在线免费观看| 亚洲韩国在线| 久久久影视传媒| 日本视频免费一区| 国产精品一国产精品最新章节| 日本福利一区二区| 国产精品二三区| 国产主播一区二区三区| 免费成人深夜夜行视频| 日韩一区二区电影| 五月天丁香久久| 丁香五月网久久综合| 欧美日韩视频在线第一区| 亚洲视频在线观看三级| 国产黄色精品网站| 亚洲 国产 欧美一区| 国产日韩欧美麻豆| 精品亚洲成a人| 欧美日韩电影一区二区三区| 精品久久久久久无| 日韩中文字幕1| 国产精品免费一区二区三区| 欧美精品在线一区二区| 有码一区二区三区| 99精品欧美一区二区三区综合在线| 中文字幕日韩一区二区三区| 国产精品五月天| 国产精品一区二区无线| 亚洲精品视频一区二区三区| 久久久不卡网国产精品一区| 激情综合色综合久久| 欧美一区二区三区四区夜夜大片| 精品欧美一区二区在线观看| 青娱乐精品视频| 任我爽在线视频精品一| 国产欧美一区视频| 国产精品123| 色综合天天性综合| 一区二区三区精品在线| 91久久国产综合久久蜜月精品| 欧美人与z0zoxxxx视频| 亚欧色一区w666天堂| 国产乱码精品一区二区三区卡| 日韩一级欧美一级| 美女高潮久久久| 亚洲 日韩 国产第一区| 日韩美女视频一区| 成人xxxxx色| 欧美大肚乱孕交hd孕妇| 精品一区二区三区av| 亚洲开发第一视频在线播放| 亚洲欧洲av另类| av日韩中文字幕| 精品少妇一区二区三区视频免付费| 美女一区二区在线观看| 亚洲精品9999| 亚洲综合色丁香婷婷六月图片| 国内精品国语自产拍在线观看| 久久免费美女视频| 成人av资源站| 欧美一级二级三级蜜桃| 精品午夜一区二区三区在线观看| 亚洲二区自拍| 一区二区三区免费在线观看| 久久精品成人一区二区三区蜜臀| 欧美国产精品一区二区三区| av电影在线观看一区| 日韩精品一区二区在线| 国产一区二区精品久久91| 在线亚洲精品福利网址导航| 日韩二区三区四区| 亚洲精品国产精品国自产| 亚洲一区二区三区美女| 日本婷婷久久久久久久久一区二区| 国产精品久久久久久福利一牛影视| 99久久99久久精品国产片果冻| 日韩美女视频一区二区在线观看| 国产传媒日韩欧美成人| 欧美精品精品一区| 国产精品一级黄| 91精品国产综合久久福利| 国产精品亚洲第一区在线暖暖韩国| 欧美色男人天堂| 精品制服美女久久| 欧美色国产精品| 激情小说欧美图片| 欧美日韩三级在线| 国产一区视频导航| 91精品国产91综合久久蜜臀| 国产乱子轮精品视频| 欧美一区二区播放| 丁香婷婷综合色啪| 久久综合色8888| 91蝌蚪porny| 久久一日本道色综合| av一区二区三区四区电影| 国产色爱av资源综合区| 国产精品久久久久久久小唯西川 | 国产精品三区www17con| 国产精品网站导航| 久久99精品久久久久子伦| 亚洲人成7777| 四虎永久国产精品| 日韩激情av在线| 欧美三级一区二区| 国产大片一区二区| 久久久久久亚洲综合影院红桃| 国产91视觉| 亚洲视频免费在线| 色女孩综合网| 蜜桃视频在线观看一区二区| 欧美精品乱码久久久久久| proumb性欧美在线观看| 中文字幕不卡在线| 日本在线观看一区二区| 日韩中文字幕91| 欧美精品色综合| 97精品电影院| 亚洲靠逼com| 色噜噜狠狠一区二区三区果冻| 韩国v欧美v亚洲v日本v| 亚洲精品一区二区三区四区高清| 国产传媒一区二区三区| 亚洲国产精品欧美一二99| 91黄色免费版| 国产一区二区成人久久免费影院| 精品免费视频一区二区| 狠狠色综合网站久久久久久久| 亚洲午夜成aⅴ人片| 欧美色偷偷大香| 99这里都是精品| 亚洲日本电影在线| 一本色道久久综合狠狠躁的推荐| 国产露脸91国语对白| 国产日韩在线不卡| 亚洲成人自拍视频| 国产黄色成人av| 国产精品伦理在线| 色哟哟亚洲精品| 成人h动漫精品一区二区| 亚洲日本成人在线观看| 色欧美乱欧美15图片| 成人午夜视频在线| 亚洲同性gay激情无套| 色婷婷综合久色| 波多野洁衣一区| 亚洲自拍偷拍av| 欧美精品自拍偷拍| 国产乱码精品一区二区三区卡| 视频在线在亚洲| 2024国产精品视频| 日韩国产高清一区| 国产精品亚洲一区二区三区妖精 | 色姑娘综合网| 国产91精品一区二区| 亚洲欧美一区二区三区国产精品| 欧美日韩在线观看一区二区| 91久久大香伊蕉在人线| 爽好多水快深点欧美视频| 日韩一区二区在线播放| 欧美日韩国产三区| 国产成人av一区二区| 亚洲男女一区二区三区| 欧美精品欧美精品系列| 精品久久精品久久| 激情五月激情综合网| 国产精品你懂的在线| 在线观看免费视频综合| 国产91精品入口17c| 久久电影网电视剧免费观看| 中文字幕欧美日本乱码一线二线 | 日韩一区二区在线看片| 日本成人三级| 成人午夜视频免费看| 亚洲丶国产丶欧美一区二区三区| 精品成人在线观看| 中文字幕免费在线不卡| 成人18视频| 韩日精品视频一区| 亚洲免费视频中文字幕| 日韩欧美国产系列|