ViewPager 添加动画效果

ViewPager动画详解 前言 前两天看到鲍永章分享的Great animations with PageTransformer以及农民伯伯分享的Create ViewPager transitions 文章,都是通过ViewPager来实现酷炫的动画,而现在的App中ViewPager的动画使用也非常的广泛。正好最近一直研究动画,那么就趁热打铁,分析一下相关的开源库吧。本篇文章介绍的ViewPager动画, 阅读详情

Viewpager 添加动画效果
* 第一种动画效果 分别对应 各自的 DepthPageTransformer
* 第2中动画效果 分别对应 各自的 ZoomOutPageTransformer
*
* 以上两个动画的效果直接在 Android API文档下面直接复制的源码
* file:///D:/adt-64/sdk/docs/training/animation/screen-slide.html


主界面 Activity

package com.gaoo.viewpageranin;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

/**
 * Viewpager 添加动画效果
 * 第一种动画效果 分别对应 各自的 DepthPageTransformer
 * 第2中动画效果 分别对应 各自的 ZoomOutPageTransformer
 *
 * 以上两个动画的效果直接在 Android API文档下面直接复制的源码 
 * file:///D:/adt-64/sdk/docs/training/animation/screen-slide.html
 */
public class MainActivity extends Activity {
    ViewPager id_viewpager;
    //图片资源
    private int[] mImgIds = new int[]{R.drawable.shuangta, R.drawable.shui, R.drawable.xiangbi};
    private List<ImageView> mImages = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        initView();


        //为 Viewpager 添加动画效果 (3.0 版本以上有用)

        //第一种动画效果 分别对应 各自的 DepthPageTransformer
        //id_viewpager.setPageTransformer(true,new DepthPageTransformer()); // 茂松叠加缩小显示动画效果

        //第2中动画效果 分别对应 各自的 ZoomOutPageTransformer
        id_viewpager.setPageTransformer(true,new ZoomOutPageTransformer()); // 平移缩放显示动画效果


        //VIewpager 设置adapter
        id_viewpager.setAdapter(new PagerAdapter() {
            @Override
            public int getCount() {
                return mImgIds.length;
            }

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                ImageView imageView = new ImageView(MainActivity.this);
                imageView.setImageResource(mImgIds[position]);
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

                container.addView(imageView);

                mImages.add(imageView);

                return imageView;

            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
               container.removeView(mImages.get(position));
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }
        });
    }

    private void initView() {
        id_viewpager = (ViewPager) findViewById(R.id.id_viewpager);
    }
}

以下两种不同的动画效果

DepthPageTransformer

package com.gaoo.viewpageranin;

import android.support.v4.view.ViewPager;
import android.view.View;

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

    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();

        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            view.setAlpha(1);
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);

        } else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);

            // 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.
            view.setAlpha(0);
        }
    }
}

ZoomOutPageTransformer

package com.gaoo.viewpageranin;

import android.support.v4.view.ViewPager;
import android.view.View;

/**
 * ViewPager 缩小翻页动画效果
 */
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
    private static float MIN_SCALE = 0.85f;
    private static float MIN_ALPHA = 0.5f;

    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();
        int pageHeight = view.getHeight();

        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

        } else if (position <= 1) { // [-1,1]
            // Modify the default slide transition to shrink the page as well
            float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
            float vertMargin = pageHeight * (1 - scaleFactor) / 2;
            float horzMargin = pageWidth * (1 - scaleFactor) / 2;
            if (position < 0) {
                view.setTranslationX(horzMargin - vertMargin / 2);
            } else {
                view.setTranslationX(-horzMargin + vertMargin / 2);
            }

            // Scale the page down (between MIN_SCALE and 1)
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

            // Fade the page relative to its size.
            view.setAlpha(MIN_ALPHA +
                    (scaleFactor - MIN_SCALE) /
                    (1 - MIN_SCALE) * (1 - MIN_ALPHA));

        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }
}
Android ViewPager 删除动画 ViewPager作为Android中使用最多的组件之一,具有良好的稳定性。本文主要介绍的是在项目实际应用中,自己做的一种卡片删除更新动画。 欢迎一起讨论。 阅读详情

相关推荐

Android ViewPager 动画效果实现

ViewPager是Android中常用的滑动布局控件,通常用于展示多个页面,并且可以通过手势左右滑动来切换页面。在本文中,我们将介绍两种常用的动画效果:平移和缩放。接口,我们可以为ViewPager的每个页面设置不同的动画效果,如平移、缩放等。通过调整参数和实验不同的代码,你可以创造出独特而有趣的滑动效果。至此,我们已经完成了为ViewPager添加平移和缩放动画效果的操作。你可以根据自己的需求,尝试其他动画效果,并调整参数来达到更好的效果。通过设置不同的参数,可以实现不同的动画效果。

DevPhantom的博客 369

ViewPager的切换动画

ViewPager切换动画

weixin_42643321的博客 999

基于STM32的超声波流量计设计

本项目基于STM32微控制器设计了一种超声波流量计,采用时间差法测量液体或气体的流速,计算流量并通过显示屏实时显示,同时支持远程数据传输。本设计通过STM32微控制器实现了基于时间差法的超声波流量计,集成了超声波信号采集、流量计算、状态显示和远程通信功能。本系统需要实现超声波信号的实时采集与处理,计算流速和流量,并将数据通过OLED显示和无线模块上传。系统需具备高精度的时间测量能力和良好的抗干扰能力。通过计算超声波在顺流和逆流方向上的传播时间差,结合管道直径与流体特性,计算流速并进一步计算流量。

stm32d1219的博客 2350

ViewPager进阶篇——转场特效

在开始本文之前我们得知道什么是专场特效,有什么效果。 例1 先上一张效果图: 今天我们就来实现这个效果并且在做两个练习。 对于ViewPager基本使用比较简单这里不再说明了。 开始讲解我们今天的主题。 翻看源码: 我们发现接口PageTransformer。顾名思义实现该接口可以控制ViewPager中item view的滑动效果。 /** * A PageTransformer...

WormholeStack 3632

F5 Shape逆向工程实战:从美西南航空到xbk的风控突破

本文以美西南航空和xbk为例,深入剖析了F5 Shape风控系统的逆向工程实战。文章拆解了其核心防线,包括通信加密、JSVMP逆向分析和无孔不入的环境指纹检测,并分享了定位Header生成入口、模拟算法输出及构建真实浏览器环境的系统性方法与思路,为合规的技术研究与测试提供参考。

weixin_29327525的博客 1389

Allan方差读图分析IMU误差指标

Allan方差标定IMU参数实测分析

weixin_44927558的博客 3566

Viewpager轮播添加动画

必须知识点 ViewPager是Google自带的翻页控件,存放在V4兼容包中,继承于ViewGroup,官方推荐和Fragment一块使用。我们平时使用的地方主要有2个,一个是app第一次启动的引导页,第二个就是弄几张图片轮播的那种。在第二种使用方式的时候经常配合PagerTabStrip或者PagerTitleStrip来显示一个标签用来指引现在处于第几个页面。 PagerTabStrip

欢乐斗佛的博客 3万+

DDR4 IP的用户接口

DDR4 IP核用户接口

bowen_wener的博客 1927

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

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

gitblog_01031的博客 817

AI驱动的数据完整性:ECC到S/4HANA迁移

在SAP ECC到S/4HANA的迁移过程中,数据完整性验证是最复杂且关键的挑战之一。本文介绍了一个全面的AI驱动的端到端数据完整性框架,用于对账事务数据并验证数百万条主数据记录和事务记录的完整性。该框架结合了模式映射、自然语言提示到SQL生成、基于LLM的解决方案、大规模数据对账的数据完整性工具、基于云的测试数据管理以及实时Power BI仪表板,为开发者提供了一个可重复、可扩展的工作流程,确保ERP迁移过程中的数据质量。

简简单单Onlinezuozuo 1173

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

ViewPager添加动画效果(一行代码)

首先建立一个普通的ViewPager普通的ViewPager加有动画效果的Viewpager 1.布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width=

lijieming159的博客 717

企业级OpenClaw部署实战:10个关键配置让你从“养虾“到“精通“

OpenClaw(社区昵称"小龙虾")作为2026年开源社区最活跃的AI Agent项目,凭借其多Agent协同架构和企业级安全隔离能力,已成为中大型企业的首选AI基础设施。本文基于真实企业部署经验,系统梳理了企业级OpenClaw部署的10个关键配置:用户ID消息隔离、群组ID消息隔离、多机器人配置、无限量Agent创建、机器人与Agent关联、Agent间调度、权限配置、Hooks任务、多模型切换及一键备份迁移。

program哲学 931

Android实现ViewPager滑屏动作并添加动画效果

1、整个文件是这样的:一个Activity主页,三个Fragment,两个谷歌官方的动画效果例子22、activity_main.xml[html] view plain copy &lt;?xml version="1.0" encoding="utf-8"?&gt;  &lt;RelativeLayout xmlns:android="http://schemas.android.com/ap...

zh_binfgan的博客 1896

linux 基于debian/ubuntu AB系统适配(二)-updateEngine移植

其实A/B系统的原理很简单,大部分的工作都集中在uboot上,rootfs只是起到一个辅助的作用,但这个作用也就必不可少的。你会发现在这个其中并没有kernel的参与。

badbayyj的博客 1033

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

电表改装与校正:低成本扩展测量量程的工程实践指南

在电子测量领域,电阻的分流与分压原理是扩展仪表量程、实现精确测量的基础技术。通过并联分流电阻或串联分压电阻,可以将一个基础微安表头改装成大量程的电流表或电压表,从而突破原有量程限制,满足多样化的测量需求。这项技术的核心价值在于以极低的成本和可控的方式,灵活定制测量工具,尤其适用于电子设计、硬件调试和教学实验等场景。其中,**校正**环节是确保改装后电表测量精度的关键,通过绘制校正曲线或调整元件参数,可以系统性地减小误差。本文以**表头参数实测**和**分流电阻计算**为例,详细拆解了从原理理解、参数计算、电

weixin_34088583的博客 355

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ViewPage的基本使用以及动画效果的添加

viewpage效果: 项目结构: layout1,layout2,layout3,是三个view视图的布局 代码实现: 1.activity_main.xml代码: 加入viewpage控件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and...

zccon的博客 8094

Android ViewPager多页面滑动切换以及动画效果(续)——单页卡内添加事件

接:http://www.cnblogs.com/dwinter/archive/2012/02/27/2369590.html 很多人问到页卡内添加事件的问题,开始没写进去,现在补。 一、页卡1内添加一个测试按钮。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="...

weixin_30265103的博客 95

巧用ViewPager 打造不一样的广告轮播切换效果

转载请标明出处: http://blog.youkuaiyun.com/lmj623565791/article/details/51339751; 本文出自:【张鸿洋的博客】 一、概述如果大家关注了我的微信公众号的话,一定知道我在5月6号的时候推送了一篇文章,文章名为Android超高仿QQ附近的人搜索展示(一),通过该文可以利用ViewPager实现单页显示多个Item且能够添加一些炫酷的动画效

Hongyang 9万+

Android 自定义 ViewPager 打造千变万化的图片切换效果

转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/38026503 记得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做。时间长了,ViewPager的切换效果觉得枯燥,形成了审美疲劳~~我们需要改变,今天教大家如

Hongyang 11万+

ViewPager导航滑动Demo

最近看ViewPager的东西,写的小Demo,和大家分享,本人新手,希望多多提意见。 实现效果:背景图片仅作参考,通过反射对Viewpager的的属性做了修改,实现滑动效果的控制,实现动态添加导航圆点和滑动。具体参考源码。             启动页面代码 package com.example.testviewpager; import android.app.Activit

Silk2018的专栏 1580

Android ViewPager多页面滑动切换以及动画效果

Android ViewPager多页面滑动切换以及动画效果

hfuuhgcc的博客 285

设置viewpager的动画效果

在使用viewpager时自带的切换效果可能不能满足需求,一些动画可能更加绚丽,github上有一个好的动画实现: https://github.com/ToxicBakery/ViewPagerTransforms 使用起来也很简单。 下载之后解压,然后将ViewPagerTransforms-master/library/src/main/java文件夹下的内容拷贝到自己项目的src

xunfan的专栏 1007

app 欢迎页的实现以及动画效果添加

最近公司app进行版本升级,这一版需要将欢迎页设置成动态的效果,ui直接给了gif图,但是gif图片太大,不太适合欢迎页来实现。。。可以用静态图自己根据动态效果来做一些动画操作。实现效果图如下:一、实现思路看到这种动态效果,可以使用viewpager 来进行实现,再对viewpager适配器中的子控件进行补间动画的缩放效果。二、界面的布局效果&lt;?xml version="1.0" encod...

cherry459的博客 1897
上一篇: 相机拍照
下一篇: TextView 实现跑马灯效果
高锦湖
博客等级 码龄11年 11粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值