当我使用
fullscreen activity wizard创建一个活动时,它会创建一个全屏活动,但是当我点击屏幕上的任何位置时,操作栏显示几秒钟.如何阻止这样做?
FullScreenActivity.java的完整代码
- /**
- * An example full-screen activity that shows and hides the system UI (i.e.
- * status bar and navigation/system bar) with user interaction.
- *
- * @see systemUIHider
- */
- public class FullscreenActivity extends Activity {
- /**
- * Whether or not the system UI should be auto-hidden after
- * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
- */
- private static final boolean AUTO_HIDE = true;
- /**
- * If {@link #AUTO_HIDE} is set,the number of milliseconds to wait after
- * user interaction before hiding the system UI.
- */
- private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
- /**
- * If set,will toggle the system UI visibility upon interaction. Otherwise,* will show the system UI visibility upon interaction.
- */
- private static final boolean TOGGLE_ON_CLICK = true;
- /**
- * The flags to pass to {@link systemUIHider#getInstance}.
- */
- private static final int HIDER_FLAGS = systemUIHider.FLAG_HIDE_NAVIGATION;
- /**
- * The instance of the {@link systemUIHider} for this activity.
- */
- private systemUIHider msystemUIHider;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_fullscreen);
- final View controlsView = findViewById(R.id.fullscreen_content_controls);
- final View contentView = findViewById(R.id.fullscreen_content);
- // Set up an instance of systemUIHider to control the system UI for
- // this activity.
- msystemUIHider = systemUIHider.getInstance(this,contentView,HIDER_FLAGS);
- msystemUIHider.setup();
- msystemUIHider
- .setOnVisibilityChangeListener(new systemUIHider.OnVisibilityChangeListener() {
- // Cached values.
- int mControlsHeight;
- int mShortAnimTime;
- @Override
- @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
- public void onVisibilityChange(boolean visible) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
- // If the ViewPropertyAnimator API is available
- // (Honeycomb MR2 and later),use it to animate the
- // in-layout UI controls at the bottom of the
- // screen.
- if (mControlsHeight == 0) {
- mControlsHeight = controlsView.getHeight();
- }
- if (mShortAnimTime == 0) {
- mShortAnimTime = getResources().getInteger(
- android.R.integer.config_shortAnimTime);
- }
- controlsView
- .animate()
- .translationY(visible ? 0 : mControlsHeight)
- .setDuration(mShortAnimTime);
- } else {
- // If the ViewPropertyAnimator APIs aren't
- // available,simply show or hide the in-layout UI
- // controls.
- controlsView.setVisibility(visible ? View.VISIBLE
- : View.GONE);
- }
- if (visible && AUTO_HIDE) {
- // Schedule a hide().
- delayedHide(AUTO_HIDE_DELAY_MILLIS);
- }
- }
- });
- // Set up the user interaction to manually show or hide the system UI.
- contentView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (TOGGLE_ON_CLICK) {
- msystemUIHider.toggle();
- } else {
- msystemUIHider.show();
- }
- }
- });
- // Upon interacting with UI controls,delay any scheduled hide()
- // operations to prevent the jarring behavior of controls going away
- // while interacting with the UI.
- findViewById(R.id.dummy_button).setOnTouchListener(
- mDelayHideTouchListener);
- }
- @Override
- protected void onPostCreate(Bundle savedInstanceState) {
- super.onPostCreate(savedInstanceState);
- // Trigger the initial hide() shortly after the activity has been
- // created,to briefly hint to the user that UI controls
- // are available.
- delayedHide(100);
- }
- /**
- * Touch listener to use for in-layout UI controls to delay hiding the
- * system UI. This is to prevent the jarring behavior of controls going away
- * while interacting with activity UI.
- */
- View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
- @Override
- public boolean onTouch(View view,MotionEvent motionEvent) {
- if (AUTO_HIDE) {
- delayedHide(AUTO_HIDE_DELAY_MILLIS);
- }
- return false;
- }
- };
- Handler mHideHandler = new Handler();
- Runnable mHideRunnable = new Runnable() {
- @Override
- public void run() {
- msystemUIHider.hide();
- }
- };
- /**
- * Schedules a call to hide() in [delay] milliseconds,canceling any
- * prevIoUsly scheduled calls.
- */
- private void delayedHide(int delayMillis) {
- mHideHandler.removeCallbacks(mHideRunnable);
- mHideHandler.postDelayed(mHideRunnable,delayMillis);
- }
- }
解决方法
如果我理解正确,你只想隐藏动作栏?
如果是,请更改此行(将flag_hide_navigation更改为0).
- private static final int HIDER_FLAGS = 0;// systemUIHider.FLAG_HIDE_NAVIGATION;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().requestFeature(Window.FEATURE_ACTION_BAR); //new
- getActionBar().hide(); //new
- getWindow().setFlags(
- WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.activity_fullscreen);
- getActionBar().show();