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

【Android应用开发】RecycleView API 翻译 (文档翻译)

Binding(绑定进程): 适配器中需要一个显示Position对应的数据的子组件,Binding就是准备该子组件的进程....这两个位置 (Position) 基本上是一样的, 除了在分发 adapter.notify*  事件 和 计算更新的布局的时候不一样. ...项目触摸监听器的作用 : RecycleView 的层级中触摸事件被当做 RecycleView 自己的滚动操作, 设置了该监听器, 就可以在 RecycleView 将触摸事件当做滚动事件之前拦截这些触摸操作...) 注册一个监听器, 当子组件被附加或者从 RecycleView 中移除时, 会得到一个相关的通知. void addOnItemTouchListener(...RecyclerView.OnItemTouchListener listener) 添加一个项目触摸监听器用于监听触摸事件, 在这些事件被传给子组件

1.4K40

Android用户界面开发概述

Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中,可以看到Android应用的所有UI组件都继承了 View类。...目前Android中主要有六种布局,分别如下:  LinearLayout(线性布局): 按照水平或垂直的顺序将子元素(可以是控件或布局)依次按照顺序排列,每一个元素都位于前面一个元素之后。... AbsoluteLayout(绝对布局): 将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来。...ID androidrnextFocusUp setNexlFocusUpId(int) 设置焦点在该组件上,且单击向上键时获得焦点的组件ID android.onClick 为该组件的单击事件绑定监听器...这两个内部类中都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性。

2.5K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java swing计算器_用winform编写计算器

    //创建 "编辑" 一级菜单的子菜单 JMenuItem copyMenuItem = new JMenuItem("复制"); JMenuItem pasteMenuItem = new JMenuItem...("粘贴"); // 子菜单添加到一级菜单 editMenu.add(copyMenuItem); editMenu.add(pasteMenuItem); //将一级菜单添加到菜单栏 menuBar.add...(editMenu); //将菜单栏添加到JFrame窗口 this.setJMenuBar(menuBar); // 设置 "复制" 子菜单被点击的监听器 copyMenuItem.addActionListener...display.getText(); display.copy(); JButton jb1 = new JButton("复制"); jb1.addActionListener(this); } }); // 设置 "粘贴" 子菜单被点击的监听器...= new JButton(label); button.addActionListener(listener); panel2.add(button); } // 创建内部类,作用于单击按钮执行命令的监听器

    2.8K00

    Android动画基础详析 | 属性动画基础及ValueAnimator

    假设:如何利用补间动画来将一个控件的背景色在1分钟内从绿色变为红色? 这个效果是没办法仅仅通过改变控件的渐入渐出、移动、旋转和缩放来实现的, 但却可以通过属性动画完美地实现。...补间动画和逐帧动画统称为视图动画, 从字面意思中可以看出, 这两个动画只能对派生自View类的控件实例起作用; 而属性动画, 从名字中可看出它是作用于控件属性的。...我们准备一个button和一个TextView, 首先给TextView控件添加了单击响应事件, 当单击该TextView时,会弹出Toast提示; 然后, 在单击按钮的时候,TextView控件开始向右下角移动...从结果中可以看出, 在移动前,单击TextView控件是可以弹出Toast提示的; 而在移动后,单击TextView控件则没有响应, 相反,单击TextView控件原来所在的区域会弹出Toast提示...removeListener(AnimatorListener listener)函数 用于在Animator中移除指定的监听器; removeAllListeners()函数 用于移除Animator

    1.5K20

    Android自定义ViewGroup神器-ViewDragHelper

    这是官方的解释:在自定义ViewGroup时,ViewDragHelper可以用来拖拽和设置子View的位置(在ViewGroup范围内)。另外,还提供了一系列的方法和状态跟踪。...三、更多用法 ViewDragHelper不仅仅能够让子View跟随我们的手指移动,还能实现以下功能: 边界触摸检测 Drag释放回调 移动到某个指定位置 我么改造下上面的例子,效果图如下: 第一个View...原因在于: 由于子View是可被点击的,那么会触发ViewGroup的onInterceptTouchEvent方法。...方法返回的值,这两个方法默认情况下都返回0。...getViewHorizontalDragRange,返回子View水平方向可以被拖拽的范围 getViewVerticalDragRange,返回子View垂直方向可以被拖拽的范围 我们尝试重写这两个方法

    1.3K50

    Android 样式系统 | 主题背景和样式

    范围 样式只有在使用它的 View 上才起作用,如果该 View 包含子 View,那么在这些子 View 上样式是无效的。...样式中定义的值与布局文件中设置的值会融合在一起 (解决方法见这篇文章: 使用样式优先级顺序)。 什么是主题背景? 主题背景是一组命名的资源的集合,这些资源可以被样式或者布局文件等引用。...比如把主题背景设置给一个 ViewGroup,此 ViewGroup 包含的所有子 View 都会受到这个主题背景的影响。(而样式恰好相反,它只对被设置的 View 起作用) 的 widgets 或样式的扩展组合 如果改为使用样式和主题背景,则可以将因主题背景变化而发生改变的部分封装为主题背景属性,因此我们仅需要为每种 View 类型定义一个样式。...下一篇文章,我们将会跟大家共同探索主题背景的公共属性以及如何创建您自己的主题背景,敬请关注。

    1.2K30

    手把手教你读懂源码,View的Touch事件传递流程详细剖析

    返回为true的话则表示拦截事件,事件不在向子View中分发,若返回false的话,则表示不拦截事件,将继续分发事件。...如点击的地方有两个子View都包含点击事件的坐标,那么后被添加到布局中的那个子view会先响应事件,即点击的时候最上层的那个组件先去响应该事件。...isTransformedTouchPointInView方法 判断视图有scrollTo或scrollBy造成的滚动偏移也需要计算在内,并判断触摸点是否在当前子视图内。...从这两个方法可知,如果当前子View可以消费该ACTION_DOWN事件,并且该ACTION_DOWN事件发生的位置在当前子View的范围内,则继续执行将ACTION_DOWN事件分发给它;否则continue...方法,最终将事件从ViewGroup传递到 View,那么事件在后续如何传递的,接下来继续分析。

    92870

    AWT的菜单组件

    ,作为二级菜单 editMenu.add(new MenuItem("-")); editMenu.add(formatMenu); //将文件菜单和编辑菜单添加到菜单条中...接下来,创建了一个菜单事件监听器(listener),用于处理菜单项的点击事件。在监听器中,根据点击的菜单项的动作命令(actionCommand),输出相应的信息,并在点击退出菜单项时退出程序。...最后,将菜单条(menuBar)添加到窗口中,并将文本域(ta)添加到窗口中显示。设置窗口的大小并可见。 在main()方法中,创建了SimpleMenu对象,并调用init()方法初始化窗口和菜单。...示例二 ​ 通过PopupMenu实现下图效果: 实现思路 创建PopubMenu菜单组件; 创建多个MenuItem菜单项,并添加到PopupMenu中; 将PopupMenu添加到目标组件中...将面板添加到窗口的底部。 设置窗口的最佳大小,并将窗口设置为可见。 在main方法中创建了一个PopupMenuTest对象,并调用init方法来初始化窗口。

    7910

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 )

    的 dispatchTransformedTouchEvent 方法 , 在该方法中 , 也就是遍历 ViewGroup 子组件时 , 调用遍历的子组件 View 的 dispatchTouchEvent...主要是遍历子组件调用子组件的触摸方法 ; 在 ViewGroup | dispatchTransformedTouchEvent 方法中 , 调用了 View 子组件的 View | dispatchTouchEvent...方法的返回值含义 : ① 如果返回 true , 证明 子组件 View 已经将事件消费完毕 , 后续不需要再继续执行遍历了 ; ② 如果返回 false , 证明 子组件并没有将事件消费 , 后续还可以进行触发...// 获取当前所有组件的子组件的 Z 轴的深度 // 按照 Z 轴深度进行排序 // Z 轴方向上 , 对于事件传递 , 上面的组件优先级高于被覆盖的下面的组件优先级..., 消费触摸事件 ; 如果子组件将事件消费掉 , 则父容器不再进行消费 , 即父容器的触摸事件被屏蔽 ; ( 子组件 ) 如果子组件没有讲事件消费掉 , 则在子组件调用返回后 , 在执行父容器的触摸事件

    1.5K30

    viewGroup与view对事件的处理

    每一个触摸事件中,都包含有所有触控点的信息。例如上述的点b按下时产生的ACTION_POINTER_DOWN事件中,就包含了触摸点a和触摸点b的信息。那么他是如何区分这两个点的信息?...对于viewGroup来说,他有很多个子view,如果不同的子view接受了不同的触控点的down事件,那么ViewGroup如何记录这些信息并精准把事件发送给对应的子view呢?...经过了前面的寻找消费down事件子控件步骤,那么每个触控点都找到了消费自己事件序列的控件并绑定在了TouchTarget中;而如果没有找到合适的子控件,那么消费的对象就是viewGroup自己。...如果时间到还没有接收到up事件,说明这是个长按事件,那么就会调用onLongClickListener监听器,而如果在延时时间内收到了up事件,那么说明这是个单击事件,取消这个延时的任务,并调用onClickListener...viewGroup为了践行这个原则,touchTarget的设计是非常重要的;他将view与触控点进行绑定,让一个触控点的事件只会给一个view消费 view的 dispatchTouchEvent 主要内容是处理事件

    93110

    带你一起探究Android事件分发机制, 让面试提问不在畏惧!

    子View可以调用parent.requestDisallowInterceptTouchEvent(true)方法可以让父View没机会执行处理拦截的逻辑,直接让父View开始传递事件。...ev.setTargetAccessibilityFocus(false); } ViewGroup,挑选传递事件的子View要符合两个条件: 可见状态 事件的坐标在子View范围 符合这两个条件...View和ViewGroup不同,View的dispatchTouchEvent()方法,意味将准备开始处理事件了。...ViewGroup有传递事件的使命,子View符合可见和在事件坐标上,则传。 没有符合条件的子View和传递给子View不消费,将自己处理。以后事件子View想都不要想。...事件交给单独的View意味着即将处理消费事件,记着要给View设置监听器CLICKABLE为ture,View才能消费事件上。不然onTouch()方法直接返回false,以后都接受不到事件。

    1.4K10

    Spring高手之路15——掌握Spring事件监听器的内部逻辑与实现

    将新文章的标题、作者和发布日期添加到搜索引擎的索引中,以便用户可以搜索到这篇新文章。更新统计信息,例如总文章数、最近发布的文章等。  ...实际上,在企业级应用中,文章发布可能会触发多种不同的后续动作,使用Spring的事件监听器模式可以带来如下优势:解耦:事件发布者(即新文章发布功能)不必关心具体的后续处理步骤。...); } // 将支持的监听器添加到allListeners列表 allListeners.add(listener);...beanFactory = this.getBeanFactory(); for (String listenerBeanName : listenerBeans) { ... // 检查并添加到筛选出来的监听器列表...ApplicationEventMulticaster 负责实际地将事件广播到各个监听器。主容器和子容器关系:在Spring中,可以有多个容器,其中一个是主容器,其他的则是子容器。

    78182

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )

    , 父容器事件冲突问题主要解决方案是使用 ViewGroup 拦截事件 , 屏蔽后续的子组件事件分发 ; 子组件事件冲突 , 可以自己设置 OnTouchListener , 精准控制 按下 , 移动...TouchTarget predecessor = null; // 将当前所有的消费的事件以及消费的 View 组件做成了一个链表 TouchTarget...方法就是消费自己的触摸事件 ; 传入的子组件不为空 , 则将事件传递给子组件 ; /** * Transforms a motion event into the coordinate...// 获取当前所有组件的子组件的 Z 轴的深度 // 按照 Z 轴深度进行排序 // Z 轴方向上 , 对于事件传递 , 上面的组件优先级高于被覆盖的下面的组件优先级...View 组件自己的 onTouchEvent 方法 // 因此 , 如果用户的 触摸监听器 OnTouchListener 返回 true // 则 用户的 点击监听器 OnClickListener

    1.2K20

    Android KeyEvent 点击事件分发处理流程(一)

    DecorView_superDispatchKeyEvent.png ViewGroup 分发的逻辑我还不大理解,不过大体上知道 ViewGroup 递归寻找当前焦点的子 View,将事件传给焦点子...当 KeyEvent 事件分到到具体的子 View 的 dispatchKeyEvent() 里时,View 会先去看下有没有设置 OnKeyListener 监听器,有则回调 OnKeyListener.onKey...ViewGroup,而 ViewGroup 就只能是递归不断的分发给子 View,事件绝不会在 ViewGroup 中被消耗掉的,最后子 View 接收到事件,分发流程结束,开始事件的处理。...() 来处理事件,然后让其返回 true 或 false,停止事件的分发。...,会导致 DecorView 也返回 true,那么上一级将根据 DecorView 返回 true 的结果停止焦点的移动,这就是我们常见的在 Activity 里重写 dispatchKeyEvent

    4K60

    【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )

    事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 五 ) 中 , 着重分析了 ViewGroup 事件分发中 , 触摸事件没有被消费 , 或被父容器拦截的情况 ; 这里再分析下触摸事件被消费之后的...事件 , 1 个抬起事件 ; 第一次按下 , 负责构建 TouchTarget 链表 , 将消费事件的 View 组件封装到 TouchTarget 中 ; 然后的移动/抬起操作 , 不再重复的创建..., 即使将手指按着移出边界 , 按钮也处于按下状态 ; 相关源码 : public abstract class ViewGroup extends View implements ViewParent...// 获取当前所有组件的子组件的 Z 轴的深度 // 按照 Z 轴深度进行排序 // Z 轴方向上 , 对于事件传递 , 上面的组件优先级高于被覆盖的下面的组件优先级...View 组件自己的 onTouchEvent 方法 // 因此 , 如果用户的 触摸监听器 OnTouchListener 返回 true // 则 用户的 点击监听器 OnClickListener

    1.2K20

    介绍几个好用的android自定义控件

    首先看效果图, 看下这两个界面,第一个中用到了一个自定义的FlowRadioGroup,支持复合子控件,自定义布局; 第二个界面中看到了输入的数字 自动4位分割了吧;也用到了自定义的DivisionEditText...) {// 迭代查找并设置 121 ViewGroup childVg = (ViewGroup) vg.getChildAt(i); 122...: 1)在addview方法中,加上判断,当前子控件是否为viewgroup类型 @Override public void addView(View child, int index, ViewGroup.LayoutParams...final RadioButton button = (RadioButton) child; radioButtons.add(button);//将找到的控件添加到集合中...(childVg); } } } 2)定义一个数组存放当前所有查到到的radiobutton; 3)在onChildViewAdded方法中,判断新添加的子控件是否为

    1.3K70

    前端系列第2集-如何让事件先冒泡后获取?

    如果希望事件先冒泡后获取,可以使用以下两种方法之一: 使用事件委托(Event Delegation) 事件委托是一种通过在其父元素上监听事件并利用事件冒泡来处理其子元素上的事件的技术。...例如,如果有一个包含多个按钮的列表,并且希望在单击每个按钮时执行相同的操作,可以将单击事件监听器添加到列表元素上,并使用事件对象来获取单击的按钮。...    }   }); 在这个例子中,我们使用事件委托将单击事件监听器添加到列表元素上,并在事件处理程序中检查被单击的元素是否为按钮。...myList 元素上,并使用 if 语句检查被单击的元素是否为按钮。...如果想要事件先冒泡后获取,可以使用以下两种方法之一: 使用事件委托(Event Delegation):将单个事件监听器添加到父元素上,以处理其子元素上的事件。

    20620
    领券