パッケージが異なると動作しない。
同じパッケージなら大丈夫。
調査中です。
暫定的にパッケージを分けない方向で回避してます。
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 件のコメント:
コメントを投稿