ViewPager过渡动画position的理解

实现Android无限循环ViewPager的终极指南 无限循环ViewPager的基本原理是利用Adapter的position值进行特殊处理。正常情况下,position值是线性递增的,而要实现首尾相连的循环效果,就需要在position值达到末尾时“回绕”到开头。这涉及到对position值的监听,并且重写相关方法,使得ViewPager能够平滑过渡,而不是在滑动到终点时出现跳动。 阅读详情

/**
 * Created by apple on 2017/4/18.
 */

            public class DepthPageTransformer implements ViewPager.PageTransformer {
                private static final float MIN_SCALE = 0.75f;

                public void transformPage(View view, float position) {
/**           关键是对position的理解:下面的数据来自于三个View的切换
              1.如果当前的这个视图,静止不动在这里,
                    那么当前的视图position是0 ,
                    他的上一个视图position是-1
                    他的下一个视图position是1
              2.此时我们把当前的视图,手指向右滑动,显示出上一个视图
                    那么当前的视图position是0  ---->  1
                    他的上一个视图position是-1 ---->  0
                    他的下一个视图position是1  ---->  2
              2.此时我们把当前的视图,手指左滑动,显示出下一个视图
                    那么当前的视图position是0  ----> -1
                    他的上一个视图position是-1 ----> -2
                    他的下一个视图position是1  ----> 0
               我们着重考虑-1--0--1或者1--0----1这两种区间的变换,
               超出-1(-1----2)和1(1---2)的变换,视觉上是看不见的,一般也是把他们做复位处理
*/
//              打印log
                    Log.e("www", view.getTag()+"transformPage: "+position);
                    int pageWidth = view.getWidth();

                    if (position < -1) { // [-Infinity,-1)
                        // This page is way off-screen to the left.
//                        这个视图已经跑到了屏幕的最左侧,可能是2、3、4、直到无穷大
                        view.setAlpha(0);

                    } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
//                        此时的情景是:当前视图的左侧视图 在往右侧滑动(-1--->0)
//                  或者 : 此时的情景是:当前视图 在往左侧滑动(0--->-1)
            view.setAlpha(1+position);
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);

        } else if (position <= 1) { // (0,1]
            // Fade the page out.
//                        此时的情景是:当前视图的右侧视图 在往左侧滑动(1--->0)
//                  或者 : 此时的情景是:当前视图 在往右侧滑动(0--->1)

                        view.setAlpha(1 - position);//这句话表明:当前视图的透明度由1变为0;当前视图的右侧视图透明度由0变为1

            // Counteract the default slide transition
            view.setTranslationX(pageWidth * -position);

            // Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE
                    + (1 - MIN_SCALE) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
//           这个视图已经跑到了屏幕的最右侧,可能是-2、-3、-4、直到负无穷大

                        view.setAlpha(0);
        }
    }
}

要想打印Log,弄清楚position的意思,要在MyPagerAdapter累里给每一个添加的View设置一个Tag,然后在里面得到这个View的Tag,这样才能看清楚是哪一个view的position

   public Object instantiateItem(ViewGroup container, int position) {
        View view = viewList.get(position);
        container.addView(view);
        view.setTag("我的位置"+position+":");
        return view;
    }
机器学习模型——非线性回归 升维是一种常用的处理非线性问题的方法,它通过将原始数据从低维空间映射到高维空间来增强模型的表达能力。我们可以看出,二维数据用一维直线很难去很好的拟合。升维里的degree设置的不易过大,否则容易造成维度灾难。升维后,拟合的线与原数据比较符合。将非线性问题转换为线性问题。 阅读详情

相关推荐

腾讯云智后台开发实习面试全纪录(已offer)

腾讯云智后台开发实习面经

wenwenaier的博客 5904

ViewPager.PageTransformer 的 position 分析

文章目录前言ViewPager.PageTransformer 的定义理解 position小结 position 的变化规律参考 前言 PageTransformer 是 ViewPager 内部定义的接口,实现该接口并通过 setPageTransformer 方法设置后可以实现自定义的 ViewPager 滑动效果。 ViewPager.PageTransformer 的定义 首先看下该接口...

FengZH的博客 709

模型剪枝实战 | Torch-Pruning 库在YOLOv8上的应用指南

本文详细介绍了如何使用Torch-Pruning库对YOLOv8模型进行结构化剪枝,以实现模型“瘦身”。通过DepGraph(依赖图)技术自动处理层间依赖,确保剪枝安全。文章提供了从环境搭建、核心原理理解到完整剪枝流程的实战指南,并强调了剪枝后的微调与性能评估,帮助开发者在保持精度的同时显著提升模型推理速度。

weixin_29046035的博客 503

认识 ViewPager position

首先要熟悉ViewPager .setOnPageChangeListener(new OnPageChangeListener()中的public void onPageScrolled( int position, float positionOffset, int positionOffsetPixels)position : (currentIndex == 0 && position

u011691253的博客 369

海康威视门禁考勤设备数据对接实战:从被动推送到主动拉取

本文深入探讨了海康威视门禁考勤设备数据对接的两种核心方案:HTTP推送与SDK主动拉取。文章对比了两种方式的适用场景、技术实现与优缺点,为开发者提供了从设备配置、代码编写到工程化部署的完整实战指南,帮助读者根据项目规模、网络环境及数据稳定性要求,做出最合适的技术选型。

weixin_29284657的博客 670

特征提取 Features Extraction

介绍了特征提取的基本概念,从分类变量,文本信息和图片信息中进行特征提取的方法,以及实现特征提取的类库

JasonH2021的博客 1万+

一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!

ViewPager的基本用法不必多说,这都很简单,我们可以在ViewPager中加载一个ImageView,也可以加载一个Fragment,这都是目前非常常见的用法。那么我今天说的是ViewPager中的PageTransformer属性,用好这个属性可以让我们的应用更加出彩,OK,那我们就开始吧!本文将从如下几方面来介绍:1.clipChildren属性2.一个页面显示多个ViewPager...

weixin_30482383的博客 901

Deepseek+Word插件:一键搞定论文翻译与润色的学术写作新革命

本文介绍了Deepseek Word插件如何革新学术写作流程,实现论文翻译与润色的一键操作。该插件深度集成于Word环境,能智能完成中英互译、语法修正、术语统一及逻辑优化,显著提升写作效率与文本质量,是研究者的高效AI助手。

weixin_29252171的博客 512

如何在ViewPager外部获取“当前显示的页面的位置position”

当你从外部GridView点击某张图片进入一个ViewPager预览照片时,你可能需要删除当前的照片,此时你需要在ViewPager外部获取当前显示页面的position(如果你在内部的话直接点击setOnclickListener,会直接得到正确的position) @Override public Object instantiateItem(ViewGroup contain

Android_Study_OK的博客 1万+

实战神器指标解析 篇四:主力吸筹指标及其分析和使用说明

主力可能会进行多次吸筹,因此需要根据黄色趋势线来判断是否有转强的变化。一旦出现转强的迹象,这通常意味着吸筹已经接近尾声,即将进入拉升前期。此时可以介入进行建仓。该股票指标通过分析价格变动的方式,能够精确跟踪并标识主力的吸筹行为。当底部出现多根洋红色柱子时,这通常表示出现了主力吸筹的指示。这段代码主要用于分析股票的底部吸筹情况、趋势和涨跌情况。

生活在别处 6219

Windows 11 安装、使用 IndexTTS2

本文详细介绍了如何在 Windows 11 系统上安装与使用 B站开源的新一代文本转语音模型 IndexTTS2。内容涵盖硬件要求、Git 与 uv 工具安装、项目源码获取、依赖配置、模型下载及 WebUI 启动步骤,并说明了基础与高级使用方法。教程注重实操细节,包括环境变量设置、显存适配启动参数等,帮助用户顺利部署并体验高质量、可调控情感与节奏的 TTS 语音合成效果。

寒水馨 · 轻量级技术文档 · hanshuixin.org 5157

viewpage显示服务器图片,ViewPageerTransform深入理解,给viewpager切换加动画

每当viewpager上一个可见或依附的页面发生了滚动事件就会调用PageTransformer,这让应用可以使用自定义transformation让viewpager某一个页面视图上实现某些特定的动画属性。但是这样的属性动画只能支持到android3.0版本或以上,在早期的版本上设置viewpager的PageTransformer会被忽略。公有方法transformPage 应用属性动画到一个...

weixin_42356340的博客 389

手把手教你学Simulink——基于Simulink的模糊自适应PI调节FOC电流环

本文提出基于模糊自适应PI控制的FOC电流环优化方案,针对传统PI控制参数固化、抗扰性差等问题,通过模糊逻辑在线调整PI参数。方案采用双输入(电流误差及变化率)和三输出(ΔKp/ΔKi/PI调节)结构,实现动态响应时间<30μs(提升38%)、超调<5%(降低71%)、参数摄动下误差<±0.4A(精度提升73%)。详细介绍了Simulink建模步骤,包括模糊规则设计(7语言变量、49条规则)、隶属度函数配置及自适应PI实现逻辑,并提供实机部署建议。仿真结果表明,该方法显著提升系统鲁棒性,特

MHD0815的博客 79

ViewPager的过渡动画

ViewPager中setPageTransformer()的一些简单理解

一生中至少要有两次奋不顾身。一次为爱情,一次为梦想。 1370

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MultiScrollDemo高级技巧:如何为ViewPager添加平滑过渡动画效果

MultiScrollDemo是一个基于NestedScrollView、ViewPager、RecyclerView和SmartRefreshLayout构建的Android开源项目,专注于解决滑动冲突并实现酷炫的下拉视差效果。本文将分享为ViewPager添加平滑过渡动画效果的实用技巧,帮助开发者提升应用的用户体验。 ## 为什么需要ViewPager过渡动画? 在现代Android应用中

gitblog_01031的博客 817

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

FlowHelper源码解析:TabLayout平滑过渡动画的实现原理

FlowHelper是一款帮助开发者快速构建顶部Tab布局的Android工具类,支持今日头条式热搜标签、搜索记录展示以及与ViewPager/ViewPager2搭配使用,其核心优势在于提供了多种平滑过渡动画效果。本文将深入解析FlowHelper中TabLayout平滑过渡动画的实现原理,帮助开发者理解其内部机制并应用到实际项目中。 ## TabFlowLayout核心组件架构 FlowH

gitblog_00234的博客 945

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android ViewPager动画效果:18种专业翻页切换方案实战指南

还在为Android应用的ViewPager翻页效果单调而烦恼?想要提升用户体验却不知从何入手?ViewPagerTransforms库为你提供了18种开箱即用的专业动画解决方案,帮助开发者轻松实现媲美原生应用的丝滑页面切换效果。本文将为你提供完整的ViewPager动画效果实现指南,从快速集成到高级定制,全面提升你的Android应用交互体验。 ## 🚀 项目概述与核心价值 ViewPag

gitblog_00568的博客 692

18种惊艳Android翻页动画:让你的ViewPager瞬间活起来

还在为Android应用的翻页效果单调乏味而烦恼?ViewPagerTransforms库为你提供了18种开箱即用的炫酷动画效果,让你的应用瞬间拥有媲美原生应用的丝滑过渡体验。作为Android开发中ViewPager翻页动画的完美解决方案,这个库不仅简化了复杂的动画实现,更为你的应用增添了专业级的视觉效果。 ## 🎯 为什么你需要ViewPagerTransforms? 在Material

gitblog_01053的博客 444

使用ViewPager动画来做出不一样的引导页

就算Google从很早开始就自带了设置引导页动画的接口,但是就我目前看来市面上使用引导页动画的还是很少的,也不知道是为什么,一想到Material Design的使用率也这么少表示很心塞。 首先来看看市面上千篇一律的引导页效果,诺: 很单调对不对,你们没看吐我都看吐了,再看一份加了引导页动画效果的: 有没有瞬间耳目一新的感觉,下面就谈谈如何做出这样的引导页动画。其实从Android 3.0也就

斩月的专栏 8559

Hekate升级完整指南:3步安全更新Switch定制引导程序,新手一次成功

Hekate 是一款图形化 Nintendo Switch 定制引导程序(Custom Bootloader),这篇 Switch引导程序更新教程面向第一次接触 Hekate 或准备给 Hekate 换版本的用户。整个升级流程其实只有四步:备份自己的配置、从官方拿到升级包、替换 SD 卡上的 bootloader 文件夹、开机验收。全程不到 10 分钟,关键是每一步都按顺序来,不要跳步。 ##

gitblog_00592的博客 796

WaveDisPlay与ViewPager对比:谁才是Android翻页组件的王者?

WaveDisPlay是一款创新的Android翻页组件,它提供了类似RecyclerView的功能,可以让用户轻松查看下一页或上一页的内容。在移动应用开发中,翻页组件是常见的UI元素,而Android官方提供的ViewPager一直是开发者的首选。那么,WaveDisPlay与ViewPager相比,究竟谁才是Android翻页组件的王者呢?本文将从多个方面对两者进行详细对比,帮助开发者做出更适

gitblog_00615的博客 599

ViewPager.PageTransformer学习笔记

对于安卓官网的PageTransformer实例,看了很久,终于明白了一点,并记录于此 首先对于ViewPager的使用分为三步 1.在Activity的布局文件中加入ViewPager; 2.创建一个类,继承自FragmentStatePagerAdapter,并实现getItem()与getCount()方法; 3.将Adapter与ViewPager绑定; 对于ViewPager之间切换使用...

qq_42806685的博客 323

Creative View Pager源码解析:深入理解协调滚动机制

Creative View Pager是一个创新的Android视图分页库,它通过巧妙的协调滚动机制实现了头部列表与页面内容的自动同步滚动效果。本文将深入解析Creative View Pager的源码实现,帮助你理解这一独特的协调滚动机制是如何工作的。 ## 协调滚动机制的核心原理 🎯 Creative View Pager的协调滚动机制是其最核心的功能特色。它通过三个关键组件协同工作:

gitblog_00818的博客 1109

18种ViewPager动画特效全解析:从基础集成到自定义实现

你还在为Android应用的ViewPager切换效果单调而烦恼吗?本文将系统讲解ViewPagerTransforms库的使用方法,带你实现18种炫酷的页面切换动画,从基础集成到自定义改造,让你的应用瞬间提升视觉体验。读完本文,你将能够: - 快速集成ViewPagerTransforms到项目中 - 掌握18种内置动画的特性与适用场景 - 理解动画实现原理并创建自定义特效 - 解决常见的兼容性...

gitblog_00488的博客 410

Creative View Pager颜色过渡效果实现原理:Palette缓存管理器详解

Creative View Pager是一个创新的Android ViewPager库,它通过智能的颜色过渡效果和Palette缓存管理器技术,为移动应用带来流畅的视觉体验。这个库不仅实现了头部列表与页面内容的协调滚动,更重要的是通过Palette缓存管理器实现了基于图片内容的动态背景颜色过渡效果,让UI交互更加生动自然。 ## 🎨 什么是Creative View Pager的颜色过渡效果?

gitblog_00852的博客 909

CarouselPicker源码解析:自定义PageTransformer实现流畅轮播效果的原理

CarouselPicker是一个功能强大的Android轮播选择器库,支持文本和图标两种展示形式。本文将深入解析其核心实现,重点探讨自定义PageTransformer如何实现流畅的轮播效果,帮助开发者理解其背后的工作原理。 ## 轮播效果的核心:PageTransformer接口 在Android开发中,ViewPager是实现页面切换的常用组件,而PageTransformer接口则赋予

gitblog_00372的博客 369
上一篇: 导入一个AndroidStudio项目时遇到的gradle问题
下一篇: 机顶盒开发前奏---电脑adb无线连接机顶盒
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值