`
huobengluantiao8
  • 浏览: 1054177 次
文章分类
社区版块
存档分类
最新评论

Android中的View与ViewGroup绘制过程,手势监听顺序与使用

 
阅读更多

一 View ,ViewGroup的绘制过程

ViewGroup绘制包括两个步骤:1.measure 2.layout

在两个步骤中分别调用回调函数:1.onMeasure() 2.onLayout()

1.onMeasure() 在这个函数中,ViewGroup会接受childView的请求的大小,然后通过childView的measure(newWidthMeasureSpec, heightMeasureSpec)函数存储到childView中,以便childView的getMeasuredWidth() andgetMeasuredHeight() 的值可以被后续工作得到。

2.onLayout() 在这个函数中,ViewGroup会拿到childView的getMeasuredWidth() andgetMeasuredHeight(),用来布局所有的childView。

3.View.MeasureSpec LayoutParams 这两个类,是ViewGroup与childView协商大小用的。其中,View.MeasureSpec是ViewGroup用来部署childView用的, LayoutParams是childView告诉ViewGroup 我需要多大的地方。

4.在View 的onMeasure的最后要调用setMeasuredDimension()这个方法存储View的大小,这个方法决定了当前View的大小。

具体详见android官方文档 dev guide->User Interface->How Android Draws Views


二 View,ViewGroup的手势监听顺序与使用

View的手势监听相关回调函数:onTouchEvent()

ViewGroup的手势监听相关回调函数:onTouchEvent(),onInterceptTouchEvent()

1.这两个回调函数都会返回一个boolean变量,表示是否消费了此手势。如果消费了,返回true,如果未消费,返回false。

2.当用户触摸一下屏幕,产生手势MotionEvent,

ViewGroup的onInterceptTouchEvent()会接受此MotionEvent。

如果此回调函数返回true,则表示此ViewGroup消费了此手势,不想再让他的childView去处理,childView的onTouchEvent()便不会再接受此手势,同时此ViewGroup的onTouchEvent()会接受此手势。

如果此回调函数返回false,则表示此ViewGroup未消费了此手势,想让他的childView去处理,childView的onTouchEvent()接受此手势,同时此ViewGroup的onTouchEvent()不会接受此手势。


3.onTouchEvent()的返回值指的是向上传递event,onInterceptTouchEvent()的返回值指的是向下传递event



分享到:
评论

相关推荐

    Android中View绘制流程

    开发者可以在这个方法中使用Canvas对象进行绘图操作,如绘制文本、图片、形状等。`drawRect()`, `drawText()`, `drawBitmap()`等是常用的绘图API。 自定义ViewGroup时,需要重写这些方法以实现特定的布局逻辑。例如...

    android 自定义view实现九宫格手势解锁

    本项目“android 自定义view实现九宫格手势解锁”旨在教你如何利用自定义View来构建一个类似手机中常见的九宫格手势解锁功能。这种功能广泛应用于各种应用程序,以提供安全且便捷的用户验证方式。 首先,我们需要...

    AndroidAutoLayout自动换行viewgroup

    AndroidAutoLayout的实现原理可能涉及到对子View的测量、布局和绘制过程的重写。在测量阶段,ViewGroup需要计算每个子View的大小,并根据当前屏幕宽度决定是否需要换行;在布局阶段,ViewGroup需要确定每个子View的...

    Android 手把手教您自定义ViewGroup(一)

    在Android开发中,自定义ViewGroup是提升应用界面复杂度和交互体验的重要手段。本教程将引导您逐步了解如何从零开始创建一个自定义的ViewGroup。我们将通过分析标题"Android 手把手教您自定义ViewGroup(一)"以及...

    android自定义View实现手势解锁

    本文将详细介绍如何使用自定义View在Android中实现手势解锁功能。首先,我们需要理解手势解锁的基本原理:用户通过在预设的点之间绘制连接线形成特定的图案,系统会记录并比较这个图案以验证用户身份。 ### 1. ...

    实现侧滑上下滑自定义ViewGroup

    ViewGroup是Android视图系统中的一种容器,用于管理其内部子View的布局和绘制。在自定义ViewGroup时,我们需要覆盖关键方法,如`onMeasure()`用于测量子View的尺寸,`onLayout()`用于确定子View的位置,以及`onDraw...

    Android-TrapezoidPartsView-梯形控件

    "the Trapezoid Parts View"是这个项目的核心类,它继承自Android的基础视图类`View`或`ViewGroup`,根据描述中的"draw Trapezoid image"推断,可能是直接继承自`View`,因为通常自定义绘图操作是在`View`中完成的。...

    Android-FamilyTreeView家谱树绘制Demo

    首先,`FamilyTreeView` 是一个自定义的 Android 控件,它扩展了 `View` 或 `ViewGroup` 类,以便能够根据数据模型动态地绘制家谱树。开发者需要了解如何自定义 Android 的视图,包括重写 `onDraw()` 方法来绘制节点...

    Android-自定义View绘制一个太极旋转图片demo

    综上所述,这个"Android-自定义View绘制一个太极旋转图片demo"涵盖了Android开发中的自定义视图绘制、动画效果以及资源管理等多个核心知识点。通过实践这个项目,开发者不仅可以提升Android图形绘制的能力,还能掌握...

    android 自定义view比较综合的例子

    在实际项目中,你还可以结合使用自定义ViewGroup来管理多个自定义View,实现更复杂的布局和交互逻辑。例如,自定义的GridView或RecyclerView可以提供更灵活的数据展示方式。 总之,这个“android 自定义view比较...

    安卓Android源码——使用代码绘制一个电池 (非图片).rar

    - 在Android中,自定义View通常需要继承`View`或`ViewGroup`类,并重写`onDraw()`方法。在这个方法里,我们可以利用Canvas和Paint进行图形绘制。在这个示例中,BatteryDemo可能就是一个自定义的View,用于显示电池...

    Android自定义view之画圆环(手把手教你如何一步步画圆环)的示例

    在Android中,自定义View通常需要继承自`View`或`ViewGroup`类,并重写`onDraw()`方法。在这个方法中,我们可以使用Canvas对象进行图形绘制。在“画圆环”的例子中,我们需要用到`Canvas`的`drawCircle()`和`drawArc...

    Android-Android自定义View有这些足够了

    在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有创新性的用户界面。本文将深入探讨“Android-Android自定义View有这些足够了”这一主题,旨在帮助你掌握自定义Android View的核心技术,...

    android自定义View之NotePad出鞘记

    10. **测试与调试**:确保在不同设备和Android版本上测试自定义View的行为,使用Android Studio的Layout Inspector查看View的布局信息,以及使用Hierarchy Viewer(Android Studio 3.0以下版本)或Layout Validation...

    Android 自定义View视图

    2. **重写构造函数**:我们需要提供至少一个构造函数,以便在布局XML文件中使用自定义View时进行实例化。通常,我们会重写`CompassView(Context context)`和`CompassView(Context context, AttributeSet attrs)`这两...

    Android自定义View绘制几何图形

    在Android开发中,自定义View是一项非常重要的技能,它允许我们根据需求绘制出各种复杂的图形,从而实现独特的用户界面。本篇文章将详细讲解如何在Android中自定义View来绘制几何图形,以矩形为例,结合提供的`...

    Android中使用View实现选项卡

    本文将深入探讨如何使用View组件在Android中实现选项卡功能,结合具体的项目实践分享相关知识。 首先,我们需要理解Android中的View组件。View是Android UI系统的基本构建块,它是所有可视元素的基类,包括按钮、...

    android 自定义View类的简单使用 示例

    在Android开发中,自定义View类是实现个性化界面和复杂交互功能的重要手段。这篇博客将带你深入了解如何简单地使用自定义View,并通过一个具体的示例进行讲解。文章链接为,尽管描述部分为空,但我们可以根据标题和...

Global site tag (gtag.js) - Google Analytics