-1

目標は、画面レイアウトを「横向き」または「縦向き」に固定し、回転イベントを引き続き受け取ることです。Activity のonConfigurationChanged (Configuration newConfig)については知っていますが、固定レイアウトでは機能しません。これに対処する方法は?より明確に説明するために、Android Camera アプリケーションのような動作を実装したいと考えています。ボタン画像のみを回転させ、アクティビティをリロードせず、レイアウトを変更しません。

EDIT#1: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)を呼び出した後、このメソッドが機能しないことを意味します

EDIT#2: はい、onConfigurationChangedは必要なものではありませんでした。代わりに、SensorEventListenerインターフェイスを実装して、onSensorChangedイベントをチェックする必要があります。Get phone orientation but fix screen orientation to portrait
から取得した完全なソリューション:

public class MainActivity extends Activity implements SensorEventListener {
int orientation = -1;
@Override
public void onSensorChanged(SensorEvent event) {
    if (event.values[1] < 6.5 && event.values[1] > -6.5) {
        if (orientation != 1) {
        Toast toast = Toast.makeText(getApplicationContext(), "LANDSCAPE", Toast.LENGTH_SHORT); 
        toast.show(); 
    }
    orientation = 1;
    } else {
        if (orientation != 0) {
        Toast toast = Toast.makeText(getApplicationContext(), "PORTRAIT", Toast.LENGTH_SHORT); 
        toast.show(); 
        }
    orientation = 0;
    }
}

これは、アクティビティの AndroidManifest 設定でうまく機能します。

android:screenOrientation="landscape"
4

1 に答える 1

0

プロジェクトのマニフェストファイルで宣言する必要があります-

    <activity
        android:name="your_activity_name"
        android:configChanges="orientation" >
    </activity>

そしてオーバーライドメソッド

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

あなたの活動クラスで。

于 2015-06-09T09:20:18.760 に答える