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

ViewPager2:官方Viewpager升级版来临

目前还只是推出了第一个预览版,我们可以直接引入来使用了: implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha01' 我们先来看看有哪些功能使用变化...); 熟悉RecyclerView同学都知道,SnapHelper用于辅助RecyclerView在滚动结束将Item对齐到某个位置。...PagerSnapHelper作用让滑动结束使当前Item居中显示,并且 限制一次只能滑动一页,不能快速滑动,这样就和viewpager交互很像了。...小结 viewpager2利用recyclerview来实现viewpager功能,无疑使使其可扩展性大大提升,代码也变得更优雅简洁,使用起来也更灵活。...不过目前viewpager2只是第一个预览版,还存在稳定性方面的问题,不建议大家引入到正式项目中来,尝尝鲜就好。

1.7K10

ViewPager2打造轮播Banner

③图中可以看出item布局需要圆角,实现方案有很多,这里选择使用官方提供ShapeableImageView实现它圆角需要写一个style ④我们都知道ViewPager2适配器RecyclerView...使用一样,这里就不贴代码了 ⑤最后我们给ViewPager2设置上adapter即可 二、轮播图左右无线滑动 数据源第一位add最后一张图val newList = arrayListOf<String...滑动到第0位最后一位处理分别如下 位置 处理 currentPosition == 0 setCurrentItem(adapter.itemCount - 2, false) currentPosition...这里采用了viewpostDelayed方法进行实现 mLooper是我定义Runnable,后面会讲原因 滑动实现了,但启停时机也很重要 所以这里选用onWindowFocusChanged因为它在窗体失去获得焦点时候会通知我们...我们知道触摸调用setOnTouchListener即可,但是给ViewPager2使用时候你会发现不起作用。

1.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

ViewPager2打造Banner轮播图

效果图 上图是天津地铁APPBanner也是本文要实现效果 一、如何使用ViewPager2 ①在app下build.gradle文件中添加如下依赖 implementation "androidx.viewpager2...适配器RecyclerView使用一样,这里就不贴代码了 ⑤最后我们给ViewPager2设置上adapter即可 二、轮播图左右无线滑动 数据源第一位add最后一张图 val newList...滑动到第0位最后一位处理分别如下 位置 处理 currentPosition == 0 setCurrentItem(adapter.itemCount - 2, false) currentPosition...,但启停时机也很重要 所以这里选用onWindowFocusChanged因为它在窗体失去获得焦点时候会通知我们 override fun onWindowFocusChanged(hasFocus...bannerVp.removeCallbacks(counter) } } 触摸暂停滚动 我们知道触摸调用setOnTouchListener即可,但是给ViewPager2使用时候你会发现不起作用

2.1K50

Now in Android | 12 月刊 · 2019

我们同事 Chris Banes 为各位开发者们发布了一个「手势导航」系列文章,帮助大家处理 Android 10 中手势变更问题: 《手势导航 (一) | 开启全面屏体验》介绍了将应用构建到全面屏设备...《手势导航 (二) | 处理视觉冲突》介绍如何处理与系统 UI 出现视觉重叠问题,判断安全交互区域。...请参考迁移指南和我们提供示例应用。 请阅读 ViewPager2 使用指南以了解如何在 Fragment 页面间完成滑动操作。...Android 10 针对非 SDK 接口 (限制非公开 API 使用) 做出更改影响了一些方法,而这些方法影响到了 Transition 代码库映射。...4.0 版本中部分新功能包括: 如果您想尝试一下 Compose 开发者预览版本,就必须使用 4.0 版本。 ?

1.9K30

ViewPager2实现内部Item动态滚动

当然RecyclerView也可以,用一个仿抖音那种 LayoutManager 就行,但是为什么不呢,因为涉及到了视频播放,手动去处理一些生命周期懒加载,总是非常麻烦,而且ViewPager2本身就是基于...产品:得加一个第一次使用提示啊,要不然用户都不知道页面可以下滑呢?效果我发你了,你看看: 下图为我实现好简单样式,大意体会即可。...layoutManager.scrollToPositionWithOffset(0, it.animatedValue as Int) } oneAnimator.start() 效果如最上面示例gif所示,这样就解决了ViewPager2-item动态滚动问题...需要注意点 就如我上面最开始分析所述,如果详情页是可滑动,那么就必须处理一下滑动冲突,相应方式也很简单,使用内部拦截法,让滑动View优先获得事件即可,当处于滑动View顶部,再将事件还给父...后续 当然用ViewPager2去写仍然有种大材小用感觉,毕竟只有两个item,所以,比较好方式依然是使用自定义滑动ViewGroup实现,所以我会在下篇博客来以一个自定义方式来解决此问题

1.5K20

【Android 应用开发】Android 无障碍开发简介 ( Android 无障碍开发辅助技术 | 启用 TalkBack 无障碍功能 | TalkBack 无障碍开发 示例 )

文章目录 一、Android 无障碍开发辅助技术 二、启用 TalkBack 无障碍功能 三、TalkBack 无障碍功能代码示例 官方文档 : Android 无障碍功能概览 一、Android 无障碍开发辅助技术...---- Android 无障碍开发 作用是 为 残障人士 提供 更好移动设备使用体验 ; 借助 无障碍开发 可以 降低 访问设备应用程序 难度 ; Android 为 无障碍开发 提供了 多种辅助技术..., 如 : TalkBack : 该技术 帮助 盲人 视力障碍者 更容易地使用 Android 设备 ; 语音提示 : 在屏幕上 点击或滑动 , 自动读取屏幕中元素和文本内容 ; 手势控制...: 支持特殊手势 , 滑动 , 双击 , 长按等 ; 自定义配置 : 配置自定义选项 , 如音量 , 速度 , 灵敏度等 ; Switch Access : 该技术 帮助 行动不便 用户更容易地使用...如 : 打开应用 , 滑动屏幕 等 ; 自定义命令 : 自定义常用命令 , 如 : 快捷方式 ; 文本转语音 : 将屏幕中文本转为语音提示 ; 无障碍模式下 , 使用键盘 , 鼠标 等外设控制焦点 ,

1.8K20

Material Design —卡片(Cards)

支持手势 卡片手势应始终在卡片集合中实施。 支持手势包括: 滑动手势(swipe gesture)可以在每张卡片上使用。限制视图内轻扫手势,使其不会彼此重叠。...例如,可滑动的卡片不应该包含可滑动图像,以便在滑动只发生一次动作。 如果用户对集合内的卡进行分类很重要,则可以使用拾取并移动手势(pick-up-and-move gesture)。...pc端卡片可展开内部滚动 卡片聚焦 当遍历卡片上焦点,在移动到下一张卡片之前访问所有可聚焦元素。...对于依赖焦点遍历进行导航(手柄键盘)页面,卡片应具有主要操作或打开包含主要和补充操作新视图。 ? 选择操作 ?...虽然卡片可以支持多种动作,UI控件溢出菜单,但请使用限制,并记住卡片是进入更复杂详细信息入口点。 ?

4.3K100

怎样在Android上实现一个iOS多任务列表效果

实践一下,如下效果: 1.png 左右效果果然不符合我们预期,item宽度是变小了,但左右padding一直空白着,经过一番尝试,最终通过一个属性解决了这个问题: viewPager.setClipToPadding...这类滚动控件,都是可以通过这个接口来避免上述问题,内部实现原理这里不展开。        ...3.1. item上下滑动动画 这一步实现原理比较简单,就是在ViewPageronTouchEvent里对move事件做上下滑动检测,满足条件对当前item view做上下移动即可,当up事件到达...,再根据速度偏移条件,判断是否真要滑动移除,要的话再触发相应动画。...,其源码实现是封装了RecyclerView,但接口几乎ViewPager一致,也解决了RecyclerView不能直接使用Fragment问题,腻害呀!

3.5K60

最新iOS设计规范四|3大界面要素:视图(Views)

屏幕上需要阅读文字应该越少越好,可以尝试编写一个标题并且避免添加额外信息。因为单字标题很少会提供有用信息,所以可以考虑以问问题使用短句方式,尽可能将标题保留在同一行上。...默认情况下,你可以点按以选择、触摸并按住进行编辑,然后滑动进行滚动。 如有需要,还可以添加更多手势来执行自定义操作。在集合中,插入、删除或重新排序项目,都可以启用动画,并且还支持自定义动画。...分列视图由一个两列或三列界面组成,分别显示一个主列,一个可选补充列一个辅助内容窗格。主列中更改将导致可选补充列中内容更改。...避免将索引与包含右对齐元素表单结合在一起。索引一般通过大滑动手势来控制。如果附近存在其他交互元素,例如显示指示器,则在出现手势很难辨别用户意图,并且可能会激活错误元素。...还应该在启用了辅助功能选项(例如粗体文本)情况下测试内容单显示情况。 显示恰当键盘类型。iOS提供了几种不同键盘类型,每种键盘都对应着一种具体输入方式。

8.4K31

Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效

implements OnTouchListener { /** * 滚动显示隐藏左侧布局,手指滑动需要达到速度。...只有完全显示或隐藏才会更改此值,滑动过程中此值无效。 */ private boolean isLeftMenuVisible; /** * 右侧菜单当前是显示还是隐藏。...只有完全显示或隐藏才会更改此值,滑动过程中此值无效。 */ private boolean isRightMenuVisible; /** * 是否正在滑动。...void recycleVelocityTracker() { mVelocityTracker.recycle(); mVelocityTracker = null; } /** * 使用可以获得焦点控件在滑动时候失去焦点...接着当用户手指离开屏幕,会根据当前滑动距离,决定后续滚动方向,通过LeftMenuScrollTaskRightMenuScrollTask来完成完整滑动过程。

2.3K60

QQ Mac版 Touch Bar功能设计

对于有些复杂编辑或选取功能,可以考虑在按钮支持点击基础上,支持长按、滑动手势进行快速操作,这样既能与用户已有的使用习惯保持一致,同时兼顾操作快捷性。...3、通过独有交互简化操作步骤:Touch Bar不光使得屏幕上功能有了一个对应按键,还赋予了这个按键长按、滑动手势。...方案设计  我们选取了几个典型场景来进行Touch Bar功能设计。  1.通用场景 通用场景是指主面板无焦点场景,比如刚登陆。...2.AIO输入 用户聊天时,焦点处于输入区,Touch Bar出现辅助输入工具。 ? 表情按钮 聊天时,表情是最常用功能之一。因此在聊天场景下,我们选取了表情功能放在Touch Bar上。...点击按钮可调出表情分组常用表情,与提取消息类似,长按可调出常用表情列表,滑动松手即可发送。 ? ? 语音消息按钮 现在发送语音消息,需要先进入语音模式,然后按住空格开始收音。

1.4K10

【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )

, distanceY 小于 0 , 应图片也向上滑动 , 解码区域 top bottom 减小 ; 向下滑动分析 : 当向下滑动 , 触摸坐标由小变大 , distanceY 大于...当向上滑动 , 触摸坐标由大变小 , distanceY 小于 0 , 对应图片也向上滑动 , 解码区域 top bottom 减小 ;...Scroller 辅助计算滑动距离 这里使用 Scroller 计算 mRect 区域 top 值 */ mScroller.fling(...当向上滑动 , 触摸坐标由大变小 , distanceY 小于 0 , 对应图片也向上滑动 , 解码区域 top bottom 减小 ;...Scroller 辅助计算滑动距离 这里使用 Scroller 计算 mRect 区域 top 值 */ mScroller.fling(

1.4K22

Android中文API——ScrollView

TextView类也有自己滚动功能,所以不需要使用ScrollView,但是只有两个结合使用,才能保证显示较多内容时候效率。但只有两者结合使用才可以实现在一个较大容器中一个文本视图效果。...public void fling (int velocityY) 滚动视图滑动(fling)手势。...(译者注: 如何监听android屏幕滑动停止事件) 参数 velocityY Y方向初始速率。正值表示手指/光标向屏幕下方滑动,而内容将向上滚动。... (int direction, Rect previouslyFocusedRect) 当在滚动视图子视图中查找焦点视图,需要注意不要将焦点设置在滚动出屏幕外控件上。.../ScrollView2 添加自动滚动智能焦点切换 [Android学习指南]使用ScrollView实现滚动效果 Android中ScrollView与ListView共用问题解决方案   示例代码

4.5K30

Android实现双向滑动特效实例代码

implements OnTouchListener { /** * 滚动显示隐藏左侧布局,手指滑动需要达到速度。...只有完全显示或隐藏才会更改此值,滑动过程中此值无效。 */ private boolean isRightMenuVisible; /** * 是否正在滑动。...private void recycleVelocityTracker() { mVelocityTracker.recycle(); mVelocityTracker = null; } /** * 使用可以获得焦点控件在滑动时候失去焦点...接着当用户手指离开屏幕,会根据当前滑动距离,决定后续滚动方向,通过LeftMenuScrollTaskRightMenuScrollTask来完成完整滑动过程。...如此一来,一分钟实现双向滑动菜单功能妥妥。 好了,今天讲解到此结束,有疑问朋友请在下面留言。

2K40

干货 | 携程机票RN复杂交互实践

本节主要简单讲述往返双栏手势实现以及遇到主要问题: Android平台,子View为ScrollView手势交互事件被列表滚动事件拦截打断 部分操作场景下,手势事件通知参数不符合预期 这两个问题严重地影响用户交互体验...,针对第一条所导致问题用户通过手势左右切换过程中,很容易触发列表滚动导致手势中断,进而导致手势不跟手以及页面抖动。...当PanResponder绑定父View包含ScrollView作为子View,在Android平台上即使响应事件已经交由父View做处理,左右滑动依然会触发List滚动。...然后在触控事件结束之后,释放重置,恢复列表滚动。采用该方案在真机实验中,使用setNativeProps可以直接操作,避免触发页面刷新影响性能,同时也解决了手势事件冲突问题。...项目中将动画移动距离作为滑动方向依据,当为0无法判断手势移动方向。

4.7K20

Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

extends LinearLayout implements OnTouchListener { /** * 滚动显示隐藏左侧布局,手指滑动需要达到速度。...只有完全显示或隐藏才会更改此值,滑动过程中此值无效。 */ private boolean isLeftLayoutVisible; /** * 左侧布局对象。...使用自定义布局的话,就可以用简单方式在任意Activity中加入滑动菜单功能,即使你有再多Activity也不用怕了,一分钟引入滑动菜单妥妥。...源码下载,请点击这里 补充: 由于这段文章写比较早了,那时写滑动菜单还存在着不少问题,我之后又将上面的代码做了不少改动,编写了一个修正版滑动菜单,这个版本主要修正了以下内容: 1.将滑动方式改成了覆盖型...2.ListView上下滚动不会轻易滑出菜单。 3.正在滑动屏蔽掉内容布局上事件。 4.当菜单布局展示,点击一下右侧内容布局,可以将菜单隐藏。

2.1K60

PhotoSwipe中文API(二)

这个常见问题更多信息。 如果你想利用动画不透明度为“隐藏”小缩略图:0,不可见性:隐藏或显示:无。不要强迫油漆布局在动画开头,以避免滞后。...1 : 1.5; } } 函数被调用每一个放大动画启动时间。可以随意根据自己尺寸屏幕DPI不同图像返回不同值。 loop boolean true 循环使用滑动手势,幻灯片。...画廊背景将逐渐淡出作为用户缩小。当手势完成后,画廊将关闭。 closeOnScroll boolean true 在页面滚动关闭画廊。选项可只是没有硬件支持触控设备。...mouseUsed boolean false 选项允许如果使用与否鼠标就预定义。有些PhotoSwipe功能依赖于它,例如默认UI左/右箭头会显示使用鼠标之后。...如果是 - PhotoSwipe不会叫preventDefault点击事件会通过。功能应该是轻是可能,因为它是在拖动开始拖动发布执行多次。

2.4K20

Flutter iOS 之间 Battle:手势交互谁才是老大?

跨平台框架都会面对原生平台沟通问题,Flutter 也不例外,在实际工程落地过程中经常会碰到手势识别交互问题。...问题 西瓜视频在实际使用过程中发现了一个问题,场景是这样:西瓜 iOS 客户端所有页面都有全屏右划退出功能,这个功能实现是将一个 PanGestureRecognizer 添加到 NavigationController...修改完之后,实际测试发现还是有问题,虽然垂直滚动列表可以正常滑动了,但是横向滚动列表表现是不对:当有横划列表,不仅列表在滚动,整个页面也在向右滑动做退出动画。...问题根本原因是全屏右划后退手势 FlutterView 都在处理右划触摸事件,而绝大多数交互场景,我们都应该遵循这样原则:父控件子控件都能处理某个手势,应该优先让子控件处理,而不是父子都处理。...总结 跨平台框架都会面对原生平台沟通问题,这是跨平台本质决定,Flutter 也不例外,我们在实际工程落地过程中踩坑多数都是这类问题,本质上手势冲突问题也属于这一类,后续碰到类似问题,大家可以尝试使用代理机制来处理

1.7K30
领券