1. 程式人生 > >Android APP 禁用橫豎屏切換

Android APP 禁用橫豎屏切換

預設情況下,Android APP的介面會隨著手機方向的改變而改變,當手機處於豎屏狀態,APP的介面也處於豎屏狀態,而當手機處於橫屏狀態,APP也會自動切換到橫屏狀態。一般情況下APP的介面都是為豎屏設計的,一旦自動切換到橫屏,介面可能就無法直視了。而且每次螢幕方向切換,當前的頁面都會銷燬並重新建立。

禁用橫豎屏切換,有兩種方式,第一種是在配置檔案中配置,第二種是在Java程式碼中設定。

第一種是在AndroidManifest.xml中,為activity節點配置android:screenOrientation屬性,指定該activity為豎屏或橫屏,我們將上面的這個activity的配置為豎屏,如下:

<activity
            android:name="chengyujia.androidtest.OrientationActivity"
            android:screenOrientation="portrait" />

再執行測試,此時無論手機螢幕方向如何,該activity始終是豎屏的。如果android:screenOrientation="landscape" 則始終是橫屏。

下面來看第二種,

只要在onCreate方法中加一句

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

即可始終保持豎屏,如果要橫屏,程式碼是

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

如上,對於單個Activity禁用橫豎屏切換是很簡單的,但是實際專案中會有很多的Activity,如果每個都設定一下就太麻煩了。有沒有一處設定全域性有效的方法呢?答案是有的,只要對第二種方式稍微改造一下即可。我們可以寫一個如下的BaseActivity類:

複製程式碼
package chengyujia.androidtest;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle; public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } }
複製程式碼

讓其它的Activity都繼承這個BaseActivity類就能實現全域性禁用橫豎屏切換了。實際開發中常用這種方法,不僅僅是用來設定橫豎屏,還有其它的公共功能也可以寫在BaseActivity中。繼承是個好東西啊,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈