首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用SYSTEM_UI_FLAG_HIDE_NAVIGATION时首先侦听TouchEvent

使用SYSTEM_UI_FLAG_HIDE_NAVIGATION时首先侦听TouchEvent,可以通过在Activity中重写onTouchEvent方法来实现。在这个方法中,您可以检测用户的触摸事件,并在用户触摸屏幕时隐藏导航栏。以下是一个简单的示例:

代码语言:java
复制
@Override
public boolean onTouchEvent(MotionEvent event) {
    // 获取系统服务
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                  | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                  | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);

    // 处理触摸事件
    switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            // 用户按下屏幕时隐藏导航栏
            break;
        case MotionEvent.ACTION_UP:
            // 用户抬起屏幕时显示导航栏
            uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
            decorView.setSystemUiVisibility(uiOptions);
            break;
    }
    return super.onTouchEvent(event);
}

在这个示例中,我们使用SYSTEM_UI_FLAG_HIDE_NAVIGATION标志来隐藏导航栏,并使用SYSTEM_UI_FLAG_IMMERSIVE_STICKYSYSTEM_UI_FLAG_FULLSCREEN标志来实现沉浸式体验。当用户触摸屏幕时,导航栏会被隐藏,当用户抬起手指时,导航栏会重新出现。

请注意,这个示例仅适用于Android平台,并且需要在Activity中实现。如果您使用的是其他平台或框架,可能需要使用不同的方法来实现相同的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【如果你要学JS XIV】—— 移动端常用事件-移动端touch触摸事件

导绪移动端浏览器兼容性较好,不需要考虑JS的兼容性问题,可以放心的使用原生JS书写效果,但是移动端也有自己独特的地方。如触屏事件touch (也称触摸事件) , Android和IOS都有。...1.触摸事件触屏touch事件说明touchstart手指触摸到一个DOM元素触发touchmove手指在一个DOM元素上滑动触发touchend手指从一个DOM元素上移开触发...div.addEventListener('touchend', function () { console.log('我摸够了'); }) 2.触屏事件TouchEvent...触摸事件对象touches 正在触摸屏幕的所有于指的列衣,targetTouches 正在触摸当前DOM元素的手指列表如果侦听的是一个DOM元素,他们两个是一样的,changedTouches 手指状态发生了改变的列表从无到有或者从有到无...4.拖动元素1.touchstart,touchmove,touchend 可以实现拖动元素2.但是拖动元素需要当前手指的坐标值我们可以使用targetTouches[0] 里面的pageX和pageY3

54300
  • 笔记54 | 管理系统UI(二)

    当这个标签与 SYSTEM_UI_FLAG_HIDE_NAVIGATION和 SYSTEM_UI_FLAG_FULLSCREEN一起使用的时候,导航栏和状态栏就会隐藏,让你的应用可以接受屏幕上任何地方的触摸事件...这个时候就要将 IMMERSIVE_STICKY和 SYSTEM_UI_FLAG_FULLSCREEN``SYSTEM_UI_FLAG_HIDE_NAVIGATION两个标签一起使用。...对于这种应用,简单的使用 SYSTEM_UI_FLAG_FULLSCREEN与 SYSTEM_UI_FLAG_HIDE_NAVIGATION就足够了,不需要使用 immersive标签。...使用非粘性沉浸模式 当你使用 SYSTEM_UI_FLAG_IMMERSIVE标签的时候,它是基于其他设置过的标签( SYSTEM_UI_FLAG_HIDE_NAVIGATION和 SYSTEM_UI_FLAG_FULLSCREEN...图2展示了当使用 IMMERSIVE_STICKY标签,半透明的系统栏展示与又隐藏的状态。 ? 图2. 自动隐藏系统栏. 下面是一段实现代码。

    1.1K40

    从 antDesign 来窥探移动端“滚动穿透”行为

    在移动端,我们完全可以使用一种通用的解决方案来解决上述造成“滚动穿透”意外行为: 无论元素是否可以滚动,每次元素的拖拽事件触发我们只需要进行判断: 寻找当前触发 touchMove 事件 event.target...如果在上述的范围内,祖先元素中存在可滚动的元素: 首先我们需要区域内的元素可以正常滚动。...move 方法中同样接受 TouchEvent 对象作为入参,根据 TouchEvent 上的位置属性分别计算: deltaX、deltaY 两个值,表示移动相较初始值的距离,不同方向可为负数。...} ,在 safari 以外的浏览器默认为 true ,它会导致部分事件函数中 preventDefault() 无效,所谓的 passive 在 chrome51 版本后出现的,本质上是为了通过被动侦听器提高滚动性能...想象一下,如果你的页面中每个 Modal 弹窗都使用了 useLockScroll 这个 hook ,那么当页面中开启两个弹窗,当关闭一个另一个还存在总不能移除了 BODY_LOCK_CLASS 吧

    53320

    HarmonyOS实战—滑动事件的坐标和返回值

    获取按下手指的位置(坐标) 获取的这些数据其实都被鸿蒙操作系统封装到TouchEvent这个动作对象当中,通过动作去调用getPointerPosition 方法,需要传递一个值。...//获取按下手指的位置(坐标) MmiPoint point = touchEvent.getPointerPosition(0); //x、y表示按下手指的位置 float x = point.getX...//获取按下手指的位置(坐标) MmiPoint point = touchEvent.getPointerPosition(0); //x、y表示按下手指的位置...根据手指的位置来确定是上、下、左、右哪个滑动 首先把按下的 x、y 移动onTouchEvent方法外面去,因为如果没有移动外面去,当第一次按下的时候就会调用onTouchEvent方法,接着就会调用按下的位置...){ MmiPoint point = touchEvent.getPointerPosition(0); //x、y表示按下手指的位置 startX = point.getX

    1K20

    鸿蒙开发游戏(二)---大鱼吃小鱼(摇杆控制)

    首先如果我们用上下左右来控制很显然是不行的,因为我们还希望斜着也能游动,所以只能使用摇杆来试下,大家都肯定玩过王者荣耀,左下角的摇杆控制英雄走动,而且滑动的时候手指不自觉就滑出摇杆圈了,但是任务已经在动...我们可以通过设置组件的弧度让其成圆形 Circle:系统给我们提供的圆形 开干 首先我们先看一下需要哪些变量,一定要提前定义好,统一操作一个变量。...TouchEvent.Down:按下事件(1次) TouchEvent.Move:移动事件(0-无数次) TouchEvent.Up(1次) 当我们一个事件产生后,就会触发一次down事件,0次移动事件...问题2 是不是还有问题,就是我们滑动摇杆小鱼动了,一旦我们停止滑动摇杆小鱼就停止了,那这是为什么呢,安卓开发应该都会自定义view,当我们需要对view进行重绘,会用到invalidate,对,这就是通知系统要刷新...那么这个定时器我们不能一直开着,主要是没必要,当我们在按压down设置,抬起释放掉 clearInterval(this.intervalId) 完整代码是 handleTouchEvent(event

    18410

    移动端页面如何优雅的适配各种屏幕,包括PC端

    这个插件本身是一个PostCSS的插件,所以首先要支持PostCss,在Vite项目中使用PostCSS很简单,只要项目中包含有效的PostCSS 配置,Vite就会自动使其应用于所有导入的CSS,所以我们要做的就是增加一个...桌面端适配 这个适配指的不是尺寸,因为前面已经使用vw解决了尺寸的适配问题,这里主要是指事件,具体来说是我们在移动端使用的交互事件一般是touch事件,但是桌面端肯定不支持,所以为了让我们的移动端组件库不至于在桌面端完全无法使用...首先进行了一下环境判断,如果不满足这两个条件就不需要做任何处理。 // ... if (inBrowser && !...; touchEvent.ctrlKey = ctrlKey; touchEvent.metaKey = metaKey; touchEvent.shiftKey = shiftKey;...(touchEvent); } // ...

    2.1K20

    HarmonyOS实战—滑动事件的三个动作

    int action = touchEvent.getAction(); // 1:表示按下操作 // 2:表示松开操作 // 3....表示滑动/移动操作 if (action == TouchEvent.PRIMARY_POINT_DOWN){ //只要写按下需要运行的代码即可...、2、3数字分别表示PRIMARY_POINT_DOWN(按下)、PRIMARY_POINT_UP(松开)、POINT_MOVE(移动),所以上面代码的参数也可以直接用数字代替,但为了更直观表达,建议使用参数...如:使用数字表示 if (action == 1){ //只要写按下需要运行的代码即可 text1.setText("按下"); }else if (action == 3){...定义成员变量计数器 int count = 0 [在这里插入图片描述] onTouchEvent方法被调用一次,就给加上一次 [在这里插入图片描述] 把count放在每次操作的后面 [在这里插入图片描述] 当按下

    79720

    Cocos Creator基础教程(11)—可拖拽组件

    而且在组件完成后,测试场景最好也不要丢弃了,等我们以后为组件升级或修改BUG,可用于快速检验修改是否正确。 ? 初始化工程 2...._onTouchMove, this); }, _onTouchMove(touchEvent) { //通过touchEvent获取当前触摸坐标点 let location...= touchEvent.getLocation(); //修改节点位置,注意要使用父节点进行对触摸点进行坐标转换 this.node.position = this.node.parent.convertToNodeSpaceAR..._onTouchEnd, this); }, _onTouchMove(touchEvent) { let location = touchEvent.getLocation()..._oldPosition; } }); 代码变复杂了,简单说明一下: 是增加了一个target节点属性,他是节点要移动到的目标 增加TOUCH_END事件,当手指抬起,检查当前节点是否在目标节点之中

    4.7K31

    自学鸿蒙应用开发(35)- 计算UI组件相对于客户区的坐标

    自定义UI组件需要处理触控操作,需要接受触控操作的位置坐标并判断这个坐标和UI组件的位置关系。例如下图中的三个绿色正方形组件: ?...如果使用对应组件的getLeft和getTop方法得到的坐标该组件相对于上一级布局的坐标。...(touchEvent.getAction()) { case TouchEvent.PRIMARY_POINT_DOWN: { MmiPoint point =...当然,可以使用相似的方法将触控坐标转换为组件坐标。...这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码如何判断使用设计模式的利弊,并合理运用设计模式。

    50820

    全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

    下面就来分析一下,APP层的API如何影响SystemUI的显示的,并一步步解开所谓沉浸式与全屏的原理,首先看一下如何更改状态栏颜色。...DecorView内容区域的扩展与fitsystemwindow的意义 fitSystemWindow属性可以让DecorView的内容区域延伸到系统UI下方,防止在扩展被覆盖,达到全屏、沉浸等不同体验效果...首先,分析下,默认样式的Activity为什么会有顶部的空白,看下一默认情况下系统的根布局属性,里面有我们要找的关键点 android:fitsSystemWindows="true": <LinearLayout...= 0 没有强制使用系统背景 sysUiVisibility & SYSTEM_UI_FLAG_HIDE_NAVIGATION == 0 没有设置隐藏导航栏 同时满足以上三点,Insets的bottom...Android4.4的时候,加了个windowTranslucentStatus属性,实现了状态栏导航栏半透明效果,而Android5.0之后以上状态栏、导航栏支持颜色随意设定,所以,5.0之后一般不使用需要使用该属性

    5.6K40

    Android学习第六弹之Touch事件的处理

    返回值:该方法的返回值机理与键盘响应事件的相同,同样是当已经完整地处理了该事件且不希望其他回调方法再次处理返回true,否则返回false。...屏幕被按下:当屏幕被按下,会自动调用该方法来处理事件,此时MotionEvent.getAction()的值为MotionEvent.ACTION_DOWN,如果在应用程序中需要处理屏幕被按下的事件,...屏幕被抬起:当触控笔离开屏幕触发的事件,该事件同样需要onTouchEvent方法来捕捉,然后在方法中进行动作判断。...当MotionEvent.getAction()的值为MotionEvent.ACTION_UP,表示是屏幕被抬起的事件。...解释:当TouchEvent发生首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由

    64450

    开发 | 傻瓜式操作带你初始化「跳一跳」游戏场景

    今天我们将为大家讲解事件的绑定以及 EUI 的进一步使用,以及什么叫「工厂方法」。...首先选择 Button 组件「复制自定义」: 这步操作,使得编辑器已经生成好了组件的代码,我们在 BeginScene.ts 文件中直接粘贴: 接下来,我们依旧在这个文件里调用自定义的 init() 初始化方法...,为开始按钮绑定点击事件: 这里主要使用 Egret 引擎中的 addEventListener() 方法来为 beginBtn 绑定事件,代码如下: // 初始化(给开始按钮绑定点击事件) private...首先添加几个变量: // 所有方块资源的数组 private blockSourceNames: Array = []; // 按下的音频 private pushVoice: egret.Sound...在新创建盒子模型的时候,先查看对象池有没有可以使用的,有的话就直接使用了。然后把这个 EUI 从 reBackBlockArr 拿出来放到 blockArr 中。

    79730
    领券