0

ICS より前の Xperia Play の場合、タッチパッドから入力を取得する唯一の方法は、NativeActivity (単純な古いアクティビティではありません) を使用することです。残念ながら、名前が示すように、NativeActivity でのすべての描画は、Java 側ではなくネイティブ側で行われます。Java 側のグラフィックを使用してネイティブ側で入力を取得するには、NativeActivity の onCreate メソッドに次を追加する必要があります。

    getWindow().takeSurface( null );
    getWindow().setContentView( R.layout.main );

そして、ネイティブ側からタッチパッドとタッチスクリーンの入力を受け取るために、JNI を介していくつかのメソッドを設定します。その後、タッチパッド入力を取得しながら、Android の Java API を使用して楽しく描画できます。これは、実行中の ICS より前の Xperia Play では非常にうまく機能します。onCreateOptionsMenu でメニューを追加しても問題ありません。

問題は、Xperia Play が ICS を実行しているときに発生します。メニューはアクションバーに移動しました。残念ながら、アクション バーを操作することはできません (3 つのドットを押しても無視され、アクション バーの後ろの面を押しているように動作します)。

違いが生じる場合に備えて、onCreateOptionsMenu を使用してアクション バー メニュー オプションを作成しています。私は Window.FEATURE_ACTION_BAR_OVERLAY を使用しており、ユーザーが「戻る」ボタンを押したときにアクションバーが表示されるようにしています (mSingleton は NativeActivity インスタンスです)。

mSingleton.runOnUiThread(
    new Runnable()
    {
        public void run()
        {
            if( mSingleton.getActionBar().isShowing() )
                mSingleton.getActionBar().hide();
            else
                mSingleton.getActionBar().show();
        }
    } );

これにより、アクション バーが表示されますが、前述のように操作できません。アクションバーにフォーカスなどを強制する方法はありますか? 通常のメニューが ICS より前のバージョンで正常に機能するという事実は、アクション バーも別の種類のメニューであるため、アクション バーとの対話も可能であるべきだと考えさせます。

4

0 に答える 0