android view 原理 -- 事件传递

1 概述我们在view上进行的点击事件,是如何传递到对应的控件的,这篇文章主要讲解控件的事件传递原理。2 布局关系 相信大家都知道,viewGroup可以包含viewGroup也可以包含view。这里只是列举了这两种可能性,具体应用的层级深度和广度肯定有所不同,但是基本都是这两种情况的变种。嵌套关系基本类似。3 示例这里讲解相关的示例,分为3个方面来讲解。(1)不拦截这里看上层的viewGroup在
摘要由CSDN通过智能技术生成

1 概述

我们在view上进行的点击事件,是如何传递到对应的控件的,这篇文章主要讲解控件的事件传递原理。

2 布局关系

这里写图片描述

相信大家都知道,viewGroup可以包含viewGroup也可以包含view。这里只是列举了这两种可能性,具体应用的层级深度和广度肯定有所不同,但是基本都是这两种情况的变种。嵌套关系基本类似。

3 示例

这里讲解相关的示例,分为3个方面来讲解。

(1)不拦截

这里看上层的viewGroup在onInterceptTouchEvent方法中返回false的情况,也就是上层并不拦截点击事件。

这里写图片描述

如上图的一个布局,点击button会走什么流程,让事件传递到button呢。

先看一看xml:

<?xml version="1.0" encoding="utf-8"?>
<com.mahuafactory.animation.custom.MyRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.mahuafactory.animation.EventActivity">

    <com.mahuafactory.animation.custom.MyLinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.mahuafactory.animation.custom.MyButton
            android:id="@+id/button"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="event_test"/>

    </com.mahuafactory.animation.custom.MyLinearLayout>


</com
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android ViewAndroid 中最基本的 UI 构建块之一,负责在屏幕上绘制视图并响应用户的操作。下面是一个简单的 View 源码分析过程: 1. 首先,我们需要了解 View 的继承关系。ViewAndroid 中所有 UI 组件的基类,它的直接子类包括 ViewGroup、TextView、ImageView 等。其中,ViewGroup 又是各种布局容器的基类,例如 LinearLayout、RelativeLayout 等。 2. 接着,我们可以查看 View 的基本属性。这些属性包括 layout_width、layout_height、padding、background 等。其中,layout_width 和 layout_height 决定了 View 在布局中的大小,padding 指定了 View 的内边距,background 则是 View 的背景。 3. View 的绘制过程可以分为两个阶段:测量和绘制。在测量阶段,View 会根据其 layout_width 和 layout_height 等属性计算出自身的尺寸。在绘制阶段,View 会将自身绘制到屏幕上。 4. View事件响应机制是 Android 中 UI 开发的重要部分。当用户触摸屏幕时,系统会将事件传递ViewView 会根据自身的点击区域判断是否响应该事件,并将事件传递给其父容器或下一个 View 进行处理。 5. 最后,我们可以查看 View 的源码实现,深入了解 View 的内部实现逻辑。例如,View 的测量和绘制过程是通过 onMeasure 和 onDraw 方法实现的,事件响应机制是通过 onTouchEvent 和 dispatchTouchEvent 方法实现的。 总的来说,理解 Android View 的源码实现可以帮助我们更好地理解 Android UI 开发的工作原理,从而编写出更高效、更灵活、更具交互性的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值