Android Pの回転について

スポンサーリンク

2018/03/07に Android P(9.0、API28に相当するもの?)のプレビュー版がリリースされました。
https://developer.android.com/preview/overview.html
■リリーススケジュール
昨年のAndroid Oとほぼ同じです。
※Oのときは、pre4まででした。

■対象端末
Pixel, Pixel XL, Pixel 2, Pixel 2 XL
日本で正式に発売されたものはないようです。
 #なので、今調べたところで、、、というのは、気にしてはダメです。
  新しいものは調べたくなるじゃないですか。
■少しだけ調べました。
以下を調べました。
Screen rotation changes
https://developer.android.com/preview/behavior-changes.html#screen-rotation-changes
説明、読みました。
google翻訳も使いました。
だけど・・・
わからない。。。
Screen Orientationの項目も新規に追加されているわけではなさそう。
ネットを探してところ、回転操作に変更があるそう。
https://www.androidpolice.com/2018/03/08/android-p-feature-spotlight-rotation-can-temporarily-locked-landscape-changes/
で、確かめました。
以下のように設定したところ、挙動が変わりました。
星印の箇所が変更点
・Activityに、screenOrientation=”fullUser”を設定
・ビルド、エミュレータ起動、アプリインストール
・エミュレータの”Auto-rotate screen”をオフ
・エミュレータを回転
・アプリは回転しない
★下のバーに、回転アイコンが表示される
★回転アイコンをタップ
★アプリの回転処理が行われる
 →回転検知のonConfigurationChangedもこのタイミングで呼ばれていました。
 →これまで、端末側で回転ロックしていた場合、アプリも回転できなかったのが、
  端末の設定に依存せず、アプリ側で縦横の対応ができるようです。
“fullUser”は、”userLandscape”や”userPortrait”でも同じかも。
#あと、確認時、適当なレスポンシブなWebviewを表示していたのですが、
 onConfigurationChangedの頭でブレイク張っていたところ、
 onConfigurationChangedで止めていても、レイアウトは中途半端に回転されていました。
  ※細かくは調べていないですが、作りが悪いだけなのかもです。
fullUserの公式の説明のgoogle翻訳(具体的なことがわからない)
===
自動回転および回転ロックでは、アクティビティを縦または横(およびその逆)にレンダリングできます。 ポートレイトとランドスケープの両方のレイアウトをサポートすることを期待してください。
回転ロックのユーザーには、180度になることが多い、逆の方向にロックするオプションが与えられます。
====
以下、試したサンプルコードの抜粋です。
AndroidManifest.xml

    <application
〜〜〜省略〜〜〜
        <activity
            android:name=".SubActivity"
            android:label="@string/title_activity_sub"
            android:screenOrientation="fullUser"
            android:theme="@style/AppTheme.NoActionBar""></activity">
〜〜〜省略〜〜〜
    </application>

SubActivity.java
画面回転を検出するメソッドをオーバーライド

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        switch (newConfig.orientation) {
            case Configuration.ORIENTATION_PORTRAIT:  // 縦長
                // 処理
                Log.d("SubActivity","ORIENTATION_PORTRAIT");
                break;
            case Configuration.ORIENTATION_LANDSCAPE:  // 横長
                // 処理
                Log.d("SubActivity","ORIENTATION_LANDSCAPE");
                break;
            default:
                break;
        }
        super.onConfigurationChanged(newConfig);
    }

コメント

タイトルとURLをコピーしました