今天我們來聊一下裝置的方向問題。我們主要說的裝置方向主要是橫向(landscape)和豎直(portrait)。裝置的方向會影響到很多東西,最主要的就是裝置的布局。所以,某些時候你可以能不希望裝置方向變了以後布局的方向也跟著改變。
首先建立乙個叫做orientationactivity
的activity,作為我們的示例。
有兩個方法可以監測到當前裝置方向的改變。
在androidmanifest.xml檔案裡給orientationactivity
新增乙個配置:
android:name=".d11.orientationactivity"
android:configchanges="orientation|screensize|keyboard">
activity>
android:configchanges - 這個配置是告訴android系統,我們要自己處理螢幕方向改變,螢幕尺寸改變和鍵盤的隱藏、顯示。
在orientationactivity
類**中新增方法:
@override
public
void
onconfigurationchanged(configuration newconfig) else
if (newconfig.orientation == configuration.orientation_landscape)
}
在上面說到的三個配置發生變化的時候,這個方法就會被呼叫。執行起來**,然後旋轉螢幕(如果是真機測試的話,記得把螢幕設定為可旋轉)。在logcat裡就會列印出旋轉的資訊:
i/orientationactivity: onconfigurationchanged
i/orientationactivity: landscape
i/orientationactivity: onconfigurationchanged
i/orientationactivity: portrait
裡面的一長串內容裡兩個單詞非常的明顯表明了方向。第一行的land,第二行的port,是兩個單詞的縮寫意思是橫屏和豎屏。
所謂的定就是讓螢幕在旋轉的時候不要改變方向。只要在androidmanifest.xml檔案裡給* orientationactivity*節點新增android:screenorientation="portrait"
屬性就可以。這樣,手機怎麼旋轉,這個activity始終保持豎直的方向。
android:name=".d11.orientationactivity"
android:configchanges="orientation|screensize|keyboard"
android:screenorientation="portrait">
activity>
前面說的兩個,乙個是告訴系統我們要手動處理,其實什麼都沒有處理。只是捕捉到了當前的手機螢幕方向。第二個,是讓activity的方向不受手機方向的影響。
在res裡新建乙個目錄叫做layout-land。這就有兩個layout目錄了,除了layout還有乙個layout-land。-land字尾表明這個目錄下的布局檔案都是水平方向使用的。沒有這個字尾的就是存放的就是處理豎直方向的布局檔案。
在layout-land裡新增乙個布局檔案,名字和layout裡的一樣:activity_orientation.xml。
為了在布局裡區分activity的方向,我們給兩個布局檔案新增不同的textview
。
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
xmlns:tools=""
android:id="@+id/activity_orientation"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.a31day.d11.orientationactivity">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="portrait"
android:textsize="30sp" />
relativelayout>
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
xmlns:tools=""
android:id="@+id/activity_orientation"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.a31day.d11.orientationactivity">
android:textsize="30sp"
android:text="landscape"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
relativelayout>
最後,記得在androidmanifest.xml檔案裡把orientationactivity
恢復到開始狀態。否則,我們上面的修改是不起作用的。
android:name=".d11.orientationactivity">
activity>
這樣就都搞定了。執行起來就可以看到效果了。 Windows Phone 開發之 裝置方向
預設專案是 只支援縱向的 如果你看一下mainpage.xaml檔案的頭部資訊,會發現兩個屬性 supportedorientations portrait orientation portrait 可以將supportedorientations想象成你準備在程式中支援的可能發生的情況的列表。你可...
Linux裝置驅動之《玩轉GPIO》
在linux裝置驅動之 點亮一盞led 中,編寫了ioctl c.h這樣的標頭檔案,在本文中將繼續使用這一頭檔案,如下 然後則是驅動模組程式,如下所示 這裡只說明與前面模組程式的區別,首先是ioctl test函式 static int ioctl test struct inode inode,s...
Android方向研究
目前android的發展正處於高速的時期,也是暴利的時期,混亂的時期,搶占地盤的時期。蘋果的iphone和ipad的成功,給了我們無限的幻想,而恰恰google的android給所有崇拜蘋果但有覺得遙不可及的人們看到了希望。全球的消費電子廠商無不蜂擁而上,一時風起雲湧,硝煙四起,誰站的最高看得最遠,...