使用View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

时间:2017-06-23 00:23:20

标签: android freeze ontouchevent slate

我正在为受限模式下的HP Slate 7开发一个Android应用程序(创建了一个对资源有限访问权限的新用户配置文件)。应用程序需要全屏,因此我使用View.SYSTEM_UI_FLAG_HIDE_NAVIGATION来隐藏状态和导航栏,当我运行应用程序时,屏幕看起来冻结并且不响应触摸(我无法点击屏幕上的按钮)。当我从下往上滑动以查看导航栏时,屏幕看起来就像生命一样,我可以按下按钮。 (这对我的应用程序用户来说并不理想,因为我不希望他们每次都能从屏幕上刷到屏幕,因为它是不好的用户体验)。

所以我的问题是HP slate和nexus的限制模式之间会有什么不同,我的应用程序可以在nexus上运行,而不适用于HP。请建议是否有任何方法可以解决这个问题。

PS1:我使用了如下所示的onTouchEvent方法来捕获屏幕上任何地方的触摸事件,但未调用该方法。

PS2:在HP slate 7的限制模式下发生,并且在HP平板7的正常模式,nexus平板电脑的正常模式或nexus平板电脑的限制模式下不会发生。

PS3:我测试了四种HP Slate 7和两种nexus片剂

PS4:在导航条滑动后,应用程序开始工作,因此我删除并创建新的用户配置文件并再次安装apk,如果您尝试创建应用程序,请不要认为应用程序在1次尝试后工作,因为它会回来重新创建受限制的用户配置文件后,无法工作模式。

编辑:我想指出我的HP平板有kitkat而Nexus有棒棒糖

我发现了一个与此主题相关的问题,如果api小于或等于19(Kitkat),他建议使用“Theme.Holo.NoActionBar.Fullscreen”全屏,而不是沉浸式  Immersive like feature in JB and ICS

这是我的代码

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    Button txtContinue;
    Button btnClickMe;
    TextView txtView;
    int n;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_short_form_test);
     txtContinue = (Button) findViewById(R.id.txtContinueTest);
     txtContinue.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent =  new Intent(MainActivity.this, 
              question1Activity.class);
            MainActivity.this.startActivity(intent);
            Log.i("########CLICKED#######","#####OnCreate#######");

         }
      });

     }


     @Override
     protected void onResume() {

        super.onResume();
        View decorView = getWindow().getDecorView();
        decorView
                .setSystemUiVisibility(
                         View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                         |  View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                         | View.SYSTEM_UI_FLAG_FULLSCREEN
                         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                       );
       }

     @Override
     public boolean onTouchEvent(MotionEvent event) {

           Log.i("########Touched#######","#####TouchEvent########");
           return super.onTouchEvent(event);

     }


   }

0 个答案:

没有答案