パッケージが異なると動作しない。
同じパッケージなら大丈夫。
調査中です。
暫定的にパッケージを分けない方向で回避してます。
intentのフラッグにニュータスクとかシングルトップとかやってみたけどだめだった。
マニフェストでlaunchmodeをシングルインスタンスとかもやってみたけどだめだった。
追記ここまで。
使用した端末のApiは14。Android 4.0です。
横画面にしたらフルスクリーンでタッチしたらActionBarが出るのを作りたい。
そう思わなければよかった。おかげでこんな時間だよ!泣
というわけで、盛り込んだ機能。
縦画面
ActionBar
・・・常に表示
レイアウトのサイズ
・・・ActionBarとStatusBarが含まれる
NavigationBar
・・・くっきり見える
横画面
ActionBar
・・・画面をタッチで表示/非表示。
レイアウトのサイズ
・・・ActionBarやStatusBarが含まれない
NavigationBar
・・・画面をタッチで表示/目立たない
以下ソース。
import android.app.Activity; import android.app.Fragment; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.Window; import android.view.WindowManager; public class RotateActivity extends Activity{ public static final String TAG = RotateActivity.class.getSimpleName(); private OnTouchListener mTouchListener = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP){ Log.d(TAG+"_onTouch_up", "in"); if(getActionBar().isShowing()){ getActionBar().hide(); v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); }else{ getActionBar().show(); v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); } return false; } return true; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); int orientation = getApplicationContext().getResources().getConfiguration().orientation; if(orientation == Configuration.ORIENTATION_PORTRAIT){ requestWindowFeature(Window.FEATURE_ACTION_BAR); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); }else{ requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); getWindow().getDecorView().setOnTouchListener(mTouchListener); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); getActionBar().hide(); } String tag = RotateTextureFragment.TAG; Fragment fragment = getFragmentManager().findFragmentByTag(tag); if(fragment == null){ fragment = RotateTextureFragment.getInstance(); int layoutId = android.R.id.content; getFragmentManager().beginTransaction() .replace(layoutId, fragment, tag) .commit(); } } }
0 件のコメント:
コメントを投稿