WindowManager Flag对View触摸事件的影响

这篇具有很好参考价值的文章主要介绍了WindowManager Flag对View触摸事件的影响。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WindowManager Flag对View触摸事件的影响

使用场景

  1. FLAG_NOT_FOCUSABLE:使当前View不会获得焦点,此View会将焦点传递到下层可获取焦点的View
  2. FLAG_NOT_TOUCH_MODAL:允许当前View获取焦点,也允许View范围外的点击事件传递给下层的View
  3. FLAG_NOT_TOUCHABLE:使View无法获取焦点
  4. FLAG_WATCH_OUTSIDE:当View范围外的点击事件发生时,View将收到MotionEvent.ACTION_OUTSIDE
  5. FLAG_SPLIT_TOUCH:使View能收到View范围之外发送给其他View的点击事件,支持多点触控

①FLAG_NOT_FOCUSABLE

    public static final int FLAG_NOT_FOCUSABLE   = 0x00000008;
  • 设置了此Flag的View不会获取焦点,也不需要接受各种输入事件,以及此Flag会同时启动FLAG_NOT_TOUCH_MODAL,最终输入事件会直接传递给下层具有焦点的View。View之外能点击

  • 如果没有设置FLAG_NOT_FOCUSABLE,那么屏幕上弹窗之外的地方不能点击。

  • 补充1:在View中添加隐藏status bar、navigation bar的代码,View设置FLAG_NOT_FOCUSABLE,在View中会导致不能与系统bar交互(status bar及navigation bar没有被隐藏)。

  • 补充2:上层View设置FLAG_NOT_FOCUSABLE,下层View没有设置,在按压TV遥控器上的上、下、左、右键会跳过View1,直接在下层可获取焦点的View2上获取焦点。

flag_not_touch_modal,Android,java,android,ui

②FLAG_NOT_TOUCH_MODAL

    public static final int FLAG_NOT_TOUCH_MODAL  = 0x00000020;
  • 设置了这个Flag,则当前View允许获取焦点,View之外的点击事件传递给下层的View。

  • 不设置这个Flag,则当前View消费掉所有点击事件,不管点击事件是否在View的范围之内。
    flag_not_touch_modal,Android,java,android,ui

③FLAG_NOT_TOUCHABLE

    public static final int FLAG_NOT_TOUCHABLE   = 0x00000010;
  • 设置了这个FLAG,那么这个View无法获取touch事件。

flag_not_touch_modal,Android,java,android,ui

④FLAG_WATCH_OUTSIDE_TOUCH

    public static final int FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000;        
  • 需先设置FLAG_NOT_TOUCH_MODAL。
  • 若点击事件在vIew范围之外,会收到MotionEvent:MotionEvent.ACTION_OUTSIDE。
    只会接收到点击事件的第一下,而后的DOWN/MOVE/UP等手势不会接收到。

flag_not_touch_modal,Android,java,android,ui

⑤FLAG_SPLIT_TOUCH

    public static final int FLAG_SPLIT_TOUCH = 0x00800000; 
  • 不设置,第一下点击则决定了哪个窗口会接收整个点击事件,直到手指拿开为止。
  • 设置了,每一个点击事件(不一定是第一个)都决定了那个窗口来接收剩下的点击事件,直到手指拿开为止,从而使多指触摸事件会被分开传递给多个窗口。

flag_not_touch_modal,Android,java,android,ui文章来源地址https://www.toymoban.com/news/detail-775551.html

到了这里,关于WindowManager Flag对View触摸事件的影响的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 11 定制系统全局监听触摸事件接口

    1.定义创建aidl接口(由于需要回调这里优先需要增加一个回调接口 ) frameworksbasecorejavaandroidappIOnTouchListener.aidl package android.app; oneway interface IOnTouchListener {      void onTouchEvent( int action); }   2.新增调用接口 在 base/core/java/android/view/IWindowManager.aidl 修改如下: import android.ap

    2023年04月08日
    浏览(45)
  • iOS开发-处理UIControl触摸事件TrackingWithEvent

    IOS BUG记录 之 处理UIControl的点击事件。 UIControl的触摸事件的方法是 beginTrackingWithTouch:withEvent:,continueTrackingWithTouch:withEvent:,endTrackingWithTouch:withEvent:,cancelTrackingWithEvent: ##下面简单的介绍一下 beginTrackingWithTouch:withEvent:是控件被拖动,让其进入高亮状态; endTrackingWithTouch:wi

    2024年02月13日
    浏览(28)
  • 鸿蒙开发笔记(二十六):交互事件--触摸,按键,鼠标,焦点

    交互事件按照触发类型来分类,包括触屏事件、键鼠事件和焦点事件。 触屏事件:手指或手写笔在触屏上的单指或单笔操作。 键鼠事件:包括外设鼠标或触控板的操作事件和外设键盘的按键事件。 鼠标事件是指通过连接和使用外设鼠标/触控板操作时所响应的事件。 按键事

    2024年01月24日
    浏览(36)
  • “Unity 输入变得简单:触摸事件和鼠标交互指南”

    了解触摸输入: 在 Unity 中,触摸输入是指用户的手指与移动设备、平板电脑或任何支持触摸的平台的屏幕之间的交互。 在Unity中,触摸输入是使用Input类捕获的,该类提供了检测触摸事件的方法。 Unity 支持多种类型的触摸输入,包括: 单点触控输入: 这涉及到单个触摸点的

    2024年04月13日
    浏览(22)
  • IOS BUG 处理UIControl触摸事件TrackingWithEvent

    IOS BUG记录 之 处理UIControl的点击事件。UIControl的触摸事件的方法是beginTrackingWithTouch:withEvent:,continueTrackingWithTouch:withEvent:,endTrackingWithTouch:withEvent:,cancelTrackingWithEvent: ##下面简单的介绍一下 beginTrackingWithTouch:withEvent:是控件被拖动,让其进入高亮状态; endTrackingWithTouch:with

    2024年02月13日
    浏览(21)
  • python-appium-触摸事件(模拟触屏操作)

            TouchAction 类将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接收到该链条后,解析各个动作,逐个执行。 一、方法         短按: press()         长按: long_press()         点击: tap()         移动到: move_to(x,y),x,y相对于上

    2023年04月09日
    浏览(20)
  • 【Canvas】在HTML画布上监听鼠标点击或触摸事件

    在做h5 canvas的时候需要注意一点,html网页上用canvas组件在不同平台上交互有时候会失效,需要做兼容处理,那是因为在手机浏览器上的不是鼠标点击,就是屏幕触摸事件. 在PC机浏览器上,都是用点击事件, 需要监听画布上的鼠标点击事件,代码如下, 在手机(可触摸设备)浏览

    2024年02月16日
    浏览(32)
  • Android进阶 View事件体系(二):从源码解析View的事件分发

    本篇文章为总结View事件体系的第二篇文章,前一篇文章的在这里:Android进阶 View事件体系(一):概要介绍和实现View的滑动 本篇文章将专注于介绍View的点击事件的分发,介绍的内容主要有: 点击事件的传递原则 解析Activity的构成 源码解析View的事件分发 源码解析View对点击

    2024年02月06日
    浏览(34)
  • Android 在TextView前面添加多个任意View且不影响换行

    实现效果如下: 如上,将头像后面的东西看作一个整体,因为不能影响后面内容的换行,且前面控件的长度是可变的,所以采用自定义View的方法来实现: 使用举例 :  (😂抱歉啊使用这边没有用Java写,不会Kotlin的应该也能看懂啥意思) activity_main.xml: la: dataListType的 0,1,

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包