前言 事件的分发是面试的必考题,也是Android作为一个移动系统,与用户交互的基础。由于整个事件分发比较繁杂,这里做一个总结,以作备忘。 事实上,Android系统中的事件分发机制是一个委托者模型。...---- 我们先从最熟悉的讲起: View View 作为视图层级中的最上层。...是事件分发的终点 dispatchTouchEvent View 的 作为最上层的控件,事件不再需要分发,因此,在dispatchTouchEvent中,几乎一定会调用 View 本身的 onTouchEvent(排除...---- ViewGroup ViewGroup 作为视图层级中View的父控件。...ViewGroup的所有ChildView的onTouchEvent全部返回false,此时表示,没有任何一个ChildView愿意处理这个事件。所以,事件会返回给上层ViewGroup。
前言 在自定义View开篇,必须跨过的一道坎儿 中,我们介绍了自定义View的几种方式,以及如何实现一个规范的自定义View,上文中也说了,实现一个规范的自定义ViewGroup是一件比较困难的事情,因为要考虑的情况包含...如何实现一个规范的ViewGroup,以实现垂直布局的LinerLayout为例 新建LinerLayoutView 继承自ViewGroup 首先我们让LinerLayoutView 适应wrap_content...我们可以看出ViewGroup的边距已经生效了。...考虑子View的Margin问题 到这里 这个自定义的ViewGroup还是不够规范,不信我们来给第一个TextView设置下边距为20dp 一个比较规范的ViewGroup,加上我们上篇文章讲的自定义属性,相信大家都掌握了自定义View的方法了。
{% extends 'base.html' %} {% from 'macros.html' import form_field %}
这里的困惑很大程度上是因为Google上有关attachToRoot(也就是inflate()方法第三个参数)的文档太模糊。...其实第三个参数的意思是: 如果attachToRoot是true的话,那第一个参数的layout文件就会被填充并附加在第二个参数所指定的ViewGroup内。...方法返回结合后的View,根元素是第二个参数ViewGroup。如果是false的话,第一个参数所指定的layout文件会被填充并作为View返回。这个View的根元素就是layout文件的根元素。...如果layout文件有一个FrameLayout作为根元素,那么FrameLayout和它的子元素都可以正常填充,而后都会被添加到LinearLayout中,LinearLayout是根ViewGroup...attachToRoot是False 在这种情况下,inflate()方法中的第一个参数所指定的View不会被添加到第二个参数所指定的ViewGroup中。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...
实现一个自定义弹窗视图 我们平时在开发的时候,经常会遇到这样的需求:在页面中弹出一个自定义视图,除了弹出的自定义视图之外,页面的其他位置都置灰态。比如下图这样: ?...要实现这样的效果,基本思路是: 1,新建一个弹窗背景视图,背景颜色设置为黑色,透明度设置为0.5; 2,将自定义弹窗视图加在弹窗背景视图上; 3,触发弹出弹窗视图的时候,将弹窗背景视图添加到程序的根窗口上...; 4,移除弹窗视图的时候,就将弹窗背景视图从父视图上移除即可。...addSubview:_customView]; _customView.center = self.center; _customView.alpha = 0; } @end 上述代码是我封装的一个浮层视图...展示浮层上的自定义提示视图的时候,我使用了UIView的动画,可以在这里实现浮层上的自定义提示视图展示时候的动画。 给浮层的背景视图添加一个点击手势,以在点击的时候移除该浮层。
使用 Twig 开发包来提供视图的功能。项目地址 : https://github.com/twigphp/Twig 。...整合重构 整合服务 现在视图功能已经可以使用,但是把视图的逻辑写到路由文件中使得逻辑比较混乱,现在把各部分逻辑分离。...解决的方式便是前面几篇文章提到的容器功能,使用 ServiceProvider 来提供视图服务。 新建 ViewServiceProvider.php 在 app/Providers/ 。...也就是 $container->get('swig') 的方式来获取视图对象。 整合路由文件 这个时候如果在路由文件中使用视图,需要在路由文件中进行视图的渲染,但这明显不应该在路由文件中被定义。...所以,我们创建一个助手函数来帮助我们进行视图的渲染及返回。 在定义视图全局助手前先创建全局获取容器对象的助手函数,更方便的获取容器对象。
1.1视图组件View 在Android中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类实现的。...1.2视图容器组件ViewGroup View类有一个非常重要的子类ViewGroup,其为View的一个扩展,可以容纳多个 View,通过ViewGroup类可以创建有联系的子View组成的复合控件...从上图可以看出,多个视图组件(View)可以存放在一个视图容器(ViewGroup)中,该容器可以与其他视图组件共同存放在另一个容器中,但是一个界面文件中必须有且只有一个容器作为根结点。...对于一个Android应用的图形用户界面来说,ViewGroup作为容器来盛装其他组件,而ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGroup组件。...偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊。
8.1 Android的屏幕元素体系 在屏幕中控件的组织上,可以将各个视图(控件)组成一个视图组(ViewGroup),视图组是一个包含了其他视图的视图。...Android GUI 程序的屏幕体系结构的组织遵循以下原则: 一个屏幕可以包含一个视图; 视图组本身也是一个视图; 视图组可以包含若干个视图。...如图所示,外部最大的框表示整个屏幕,其中包含一个视图组 ViewGroup0,ViewGroup0 包含 3 个子视图,即 View1、ViewGroup1、ViewGroup2ViewGroup1 本身也是视图组...根据以上的原则,当屏幕需要包含多个视图时,必须组织在一个视图组中。由于视图组本身也是一个视图,因此视图组还可以包含视图组。...在这里一个主要的限制是:在没有视图组的情况下,两个以上的视图(也包括视图组)是不能够并列的。 例如,在布局文件中,类似下面的写法是不可以的。 <?
Activity中包含views和ViewGroups(视图组)。 Android中的View与我们以前理解的“视图”不同。...ViewGroup和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,View类有接受和处理消息的功能,android系统所产生的消息会在这些ViewGroup和 View之间传递...每个“视图”(View)都继承自基类android.view.View。 ViewGroup ViewGroup可以包含一个或多个View。...ViewGroup本身就是一种特殊的View,它提供了一个布局,可以使用这个布局去组织一系列的View视图。...ViewGroup继承于View,它可以包含其他的View,就像一个View的容器,我们可以调用其成员函数addView()将View当作孩子放到ViewGroup中。
填一个laravel视图缓存没有及时更新的坑 2018-5-5 1.此坑背景 laravel在渲染blade模板后,会将渲染好的结果存到storage/framework/views(默认路径,也可在配置中修改的...但我最近总是发现修改了blade模板,但怎么刷新都还是有视图缓存。除非执行 php artisan view:clear 清空缓存。...google 好多次,得到了以下结论: 1.laravel 的视图缓存是无法设置过期时间的。 2.laravel的视图缓存功能是无法关闭的。 如果是这样,那一定是我的开发环境出了问题。
ViewGroup(树根)和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,View类有接受和处理消息的功能,android系统所产生的消息会在这些ViewGroup和 View...035_1.png DecorView实际上是一个ViewGroup。在依存关系上来讲,对单个主窗口来讲,DecorView是Top-Level View。...如果requestLayout()或invalidate()有一个被调用,框架会对视图树进行相关的测量、布局和绘制。 注意,视图树是单线程操作,直接调用其它视图的方法必须要在UI线程里。...ViewGroup ViewGroup继承于View,它可以包含其他的View,就像一个View的容器,我们可以调用其成员函数addView()将View当作孩子放到ViewGroup中。...我们经常使用的LinearLayout、relativeLayout等都是ViewGroup的子类,ViewGroup类中有一个内部类ViewGroup.LayoutParams,我们经常使用LayoutParams
, int l, int t, int r, int b); 可以发现他是一个抽象方法,那么就说明所有直接继承ViewGroup的容器都要实现这个方法。...视图的边框是绘制在内容区域的边界位置上的,而视图的内容区域是需要排除成员变量mPaddingLeft、mPaddingRight、mPaddingTop和mPaddingBottom所描述的视图内边距的...3.绘制视图View的内容onDraw 第三步是调用onDraw()方法绘制内容。发现是一个空的方法,也就是说所有View继承View的控件都要重写这个方法来实现对自己内容的绘制。...我们知道之后ViewGroup才有可以有子视图,那么我进入ViewGroup#dispatchDraw()方法看下: @Override protected void dispatchDraw....不管任何情况,每一个View视图都会绘制 scrollBars滚动条,且绘制滚动条的逻辑是在父类View中实现,子类无需自己实现滚动条的绘制。
一、include的用法以及注意点 在开发Android布局时,我们常将一些通用的视图提取到一个单独的layout文件中,然后使用标签在需要使用的其他layout布局文件中加载进来,比如我们自己...这样,便于对相同视图内容进行统一的控制管理,提高布局重用性。...二、merge的用法以及注意点 merge标签存在的意义是帮助include标签排除多余的一层ViewGroup容器,减少view hierarchy的结构,提升UI渲染的性能。...根容器ViewGroup使用标签代替,从而减少一层ViewGroup的嵌套,提升UI渲染性能。.... 2,因为merge标签并不是View,所以在通过LayoutInflate.inflate()方法渲染的时候,第二个参数必须指定一个父容器,且第三个参数必须为true,也就是必须为merge下的视图指定一个父亲节点
首先找到我们的模糊搜索的输入框,模糊搜索,请输入关键字" v-model='ss_input' />,这里介绍下oninput...oninput="Search_act(event)" 模糊搜索...v-model='ss_input' /> vue中使用@input 模糊搜索...response.data.all_href; }).catch(err => { console.log('操作失败' + err); }) }, 还是调用geturl接口,只是传了一个参数...,字段加上__icontains表示忽略大小写模糊搜索,__contains 则是不忽略大小写的模糊搜索相当于like。
引言:模糊查询作为后台常用的一种查询方式,我们可以根据相应的 关键字对其检索,从而获得所需要的记录,本次模糊查询我们通过名字的任何一个字段进行匹配查询。...此外,想要模糊查询,最好学会分页查询,分页查询我用了两种方法,一种是利用的pageHelper,另一种没用到插件....ssm分页查询_liqz666的博客-CSDN博客_ssm分页查询 ssm框架下的分页查询_liqz666的博客-CSDN博客 看看这些,对你模糊查询是一个很好的铺垫,希望能帮到大家了。...FOREIGN_KEY_CHECKS = 1; ---- 3、创建接口 List findByName(@Param(“username”)String username);//根据username字段里的任意一个值进行模糊查询整条记录...span> <a href=” ---- 9、效果图 ---- ---- 根据名字的任何一个字段进行查询
而不是使用一个视图回收机制。...viewpager不直接处理每一个视图而是将各个视图与一个键联系起来。这个键用来跟踪且唯一代表一个页面,不仅如此,该键还独立于这个页面所在adapter的位置。...该方法实现的功能是移除一个给定位置的页面。适配器有责任从容器中删除这个视图。这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。...()的函数说明中同样出现过,这说明在 finishUpdate(viewGroup)执行完后,有两个操作,一个是原视图的移除(不再显示的视图),另一个是新增显示视图(即将显示的视图) 在上一章的代码中,..., int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个View) 返回值:如果对应的是同一个View,返回True,否则返回False。
这里写图片描述 还要注意视图尺寸MeasureSpec是一个组合尺寸,它是一个32位bit值,高两位是尺寸模式specMode,低30位是尺寸大小值,我们可以利用提供的原声库方法很方便的进行尺寸组合和拆解...这里写图片描述 当我们自定义一个组件时,通常时重写onLayout方法,里面实现好自己的逻辑,最后在调用layout方法完成视图位置确定,如果自定义组件时一个ViewGroup的话,还需要我们去遍历每一个...凡是layout_XXX的布局属性基本都针对的是包含子View的ViewGroup的,当对一个没有父容器的View设置相关layout_XXX属性是没有任何意义的(前面《Android应用setContentView...这里写图片描述 draw原理总结 可以看见,绘制过程就是把View对象绘制到屏幕上,整个draw过程需要注意如下细节: 如果该View是一个ViewGroup,则需要递归绘制其所包含的所有子View。...区分View动画和ViewGroup布局动画,前者指的是View自身的动画,可以通过setAnimation添加,后者是专门针对ViewGroup显示内部子视图时设置的动画,可以在xml布局文件中对ViewGroup
一个窗口中一个时间内只能有一个具有焦点的控件。在早期具有滚轮设备的android系统中以及现在的智能TV电视应用中视图的焦点控制就非常重要了。...下面是几个关于焦点特性的描述: ViewGroup中有一个mFocued成员来保存子视图中哪个子视图是具有焦点的视图,并且这样一直会递归下去。...ViewGroup没有焦点并不代表其子视图也没有焦点,这里没有父子制约关系。 任何时候一个窗口内都只有一个视图具有焦点,或者所有视图都无焦点。 并不是所有视图都可以获取焦点。...下面的函数用来查找具有焦点的视图,如果是View则判断自己是否有焦点,如果是ViewGroup则自己就是焦点返回自己,否则返回儿子视图里面的焦点视图。...public void addFocusables(ArrayList views, int direction) 下面的方法可以获取一个View或者ViewGroup下所有可获取焦点的子视图列表
标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的。View是绘制在屏幕上能与用户进行交互的一个对象。...而对于ViewGroup来说,则是一个用于存放其他View和ViewGroup对象的布局容器!...用户界面布局 在你APP软件上的,用户界面上显示的每一个组件都是使用层次结构View和ViewGroup对象来构成的,比如,每个ViewGroup都是不可见容器,每个ViewGroup视图组用于组织子视图...LinearLayout是一个视图组,可以在一个方向垂直或者水平分布所有子项,用android:orientation属性。...,是一个ViewGroup的二维视图。
领取专属 10元无门槛券
手把手带您无忧上云