Android APP 簡單高效的禁用橫豎屏切換

來源:互聯網
上載者:User

標籤:

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

下面先做一個簡單的示範

布局檔案:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tvMsg"        android:layout_width="fill_parent"        android:layout_height="wrap_content" /></LinearLayout>

後台Activity檔案:

package chengyujia.androidtest;import android.app.Activity;import android.content.res.Configuration;import android.os.Bundle;import android.widget.TextView;public class OrientationActivity extends Activity {    private TextView tvMsg;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_orientation);        tvMsg = (TextView) findViewById(R.id.tvMsg);        // 預設情況下每次橫豎屏切換,當前的Activity都會銷毀,然後重新建立,並調用onCreate方法。        showOrientation();    }    private void showOrientation() {        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {            tvMsg.setText("當前是橫屏");        }        else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {            tvMsg.setText("當前是豎屏");        }    }}

下面是運行:

旋轉螢幕到橫屏時的:

禁用橫豎屏切換,有兩種方式,第一種是在設定檔中配置,第二種是在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中。繼承是個好東西啊,哈哈。

Android APP 簡單高效的禁用橫豎屏切換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.