編輯:關於android開發
默認情況下,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 View分區域點擊實現方案——1.根據坐標范圍 Android View分區域點擊實現方案——1.根據坐標范圍 標簽: Android學習記錄
我的android學習經歷13,android學習經歷13ToggleButton控件的使用 ToggleButton控件看名字就可以知道它是一個 “開關&r
淺談Android應用保護(一):Android應用逆向的基本方法,淺談android對於未進行保護的Android應用,有很多方法和思路對其進行逆向分析和攻擊。使用一些
FFmpeg使用手冊 - MP4的格式解析視頻文件轉MP4在互聯網中常見的格式中,跨平台最好的,應該是MP4文件,因為MP4文件既可以在PC平台的Flashplayer中
Failed to apply plugin [id 'com.