viewpage原始效果:

一、viewpage的基本使用

项目结构:

layout1,layout2,layout3,是三个view视图的布局

代码实现:

1.activity_main.xml代码:

加入viewpage控件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"tools:context="com.example.viewpagertest.MainActivity"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"></android.support.v4.view.ViewPager></RelativeLayout>

2.新建三个布局文件:layout1,layout2,layout3

layout1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ff7799"android:orientation="vertical" ><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/pageone"android:text="我是第一个page"android:textSize="40dp"android:textStyle="bold"/></LinearLayout>

layout2.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#88ff88"android:orientation="vertical" ><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="我是第二个page"android:textSize="40dp"android:textStyle="bold"/></LinearLayout>

layout3.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#dd6633"android:orientation="vertical" ><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="我是第三个page"android:textSize="40dp"android:textStyle="bold"/></LinearLayout>

3.MainActivity.java

package com.example.viewpagertest;import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private TextView text1;private View view1, view2, view3;private ViewPager viewPager;  //对应的viewPagerprivate List<View> viewList;//view数组@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化过程viewPager = (ViewPager) findViewById(R.id.viewpager);LayoutInflater inflater=getLayoutInflater();view1 = inflater.inflate(R.layout.layout1, null);view2 = inflater.inflate(R.layout.layout2,null);view3 = inflater.inflate(R.layout.layout3, null);text1 = (TextView)view1.findViewById(R.id.pageone);text1.setText("page one");// 将要分页显示的View装入数组中viewList = new ArrayList<View>();viewList.add(view1);viewList.add(view2);viewList.add(view3);PagerAdapter pagerAdapter = new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewList.size();}@Overridepublic void destroyItem(ViewGroup container, int position,Object object) {// TODO Auto-generated method stubcontainer.removeView(viewList.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(viewList.get(position));return viewList.get(position);}};viewPager.setAdapter(pagerAdapter);}
}

二、viewpage加入动画效果

动画1:ZoomOutPageTransformer()

动画2:DepthPageTransformer()

具体实现代码:

以动画1为例。

1.新建ZoomOutPageTransformer类,实现动画的过程

package com.example.viewpagertest;import android.support.v4.view.ViewPager;
import android.view.View;/*** Created by Administrator on 2019/3/31.* viewpage动画1*/public class ZoomOutPageTransformer implements ViewPager.PageTransformer {private static final float MIN_SCALE = 0.85f;private static final 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){// Modify the default slide transition to shrink the page as wellfloat 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{// This page is way off-screen to the right.view.setAlpha(0);}}
}

2.MainActivity中加入语句

viewPager.setPageTransformer(true,new ZoomOutPageTransformer());

例如在本项目中:
这样就实现了动画效果。

附:动画2DepthPageTransformer代码:

package com.example.viewpagertest;import android.support.v4.view.ViewPager;
import android.view.View;/*** Created by Administrator on 2019/3/31.* viewpage动画2*/
public class DepthPageTransformer implements ViewPager.PageTransformer {private static final 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 pageview.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 transitionview.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);}}
}

ViewPage的基本使用以及动画效果的添加相关推荐

  1. UE4学习-虚幻4帮助手册、通过蓝图实现动画效果、添加时间轴、添加声音、C++和蓝图事件关联

    文章目录 虚幻4帮助手册 把一个对象转换成蓝图类 C++和蓝图的关联 添加时间轴 修改defaultPawn 修改door的事件图标 给场景添加声音 虚幻4帮助手册 虚幻4帮助手册 虚幻4帮助手册 虚 ...

  2. Swift教程_零基础学习Swift完整实例(八)_swift完整实例(添加View的动画效果、添加View的阴影)...

    6.添加View的动画效果 本章节主要来做明细页面点击后翻转的动画效果,该效果可以进行多种改变,以达到想要的效果. 1.首先我们需要进行翻转的正反两个view,前面我们已经做好了,分别是PKOElem ...

  3. Android 动画效果及Interpolator和AnimationListener的使用

    转载http://www.itzhai.com/android-animation-used-to-achieve-control-of-animation-effects-and-use-of-in ...

  4. uni-app中自定义图表(canvas实现chart图表)开发篇(5)-圆环进度条添加动画效果

    这里增加一篇介绍下进度条动画效果如何添加,前几篇的进度值被修改后,切换效果比较生硬.另外也在第四篇基础上,对图形略作修改.在查看uniapp文档时,没有发现重绘执行函数,小程序中有Canvas.req ...

  5. 用计算机实现的动画效果,运用PPT编辑动画效果

    为了让幻灯片中的对象的动画效果丰富自然,我们可对其添加多个动画效果,例如,我们要对某张图片添加进入屏幕时的动画动作.在屏幕中的运动轨迹以及从屏幕中消失的动画动作,可先将该图片选中,然后依次添加进入式动 ...

  6. wps手机版ppt动画效果_你不知道的WPS|仅这2个制作PPT的动画技能,就足够让你的PPT逼格瞬间提升...

    早前有网友调侃"干的累死累活,有成果那又如何,到头来干不过写PPT的". 恭喜你,看完这篇文章,你也可以加入"干不过的PPT一族". 先不说写PPT是不是真的这 ...

  7. Android之app引导页(背景图片切换加各个页面动画效果)

    转载:http://blog.csdn.net/lowprofile_coding/article/details/48037095 先看效果图: 1.显示三个页面的Activity  用view p ...

  8. android 动画x轴旋转,Android Roate3dAnimation实现围绕y轴竖直方向或者绕x轴方向旋转的3d动画效果...

    概要: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Roate3dAnim ...

  9. 【骚气的动效】外发光涟漪波纹动画、向外辐射动画效果,通常用于地图上面某一个扩散点效果

    第一种:两轮外发光叠加,第二轮外发光结束后再出现第一轮 /* 外发光动画.向外辐射动画效果 */$orangeColor: rgba(251, 193, 105, 0.6); %out-glow {& ...

  10. 模仿滴滴单车解锁的时候,从0%到90%的欺骗加载动画效果

    /**欺骗加载动画效果-*/var text = '已解锁{value}%';var interval;var __fakeLoading = function (callback, time, pe ...

最新文章

  1. 设备初始化缩水篇(一)
  2. 使用指针做函数返回值
  3. 基于EasyNVR摄像机网页无插件直播服务二次开发实现H5播放页面的简单集成方案...
  4. qq讨论组显示连接服务器异常,QQ讨论组出现大面积故障 腾讯回应:因服务器异常 已紧急修复...
  5. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
  6. MySQl 8.0.13版本修改密码
  7. hash表与系统顺序寻址
  8. Scala闭包特性的一个测试
  9. 如何在虚拟linux环境运行python_Conda(Python)虚拟环境不能从Windows移植到Linux
  10. SAP License:PO中“最终发票”的应用与理解
  11. python提取xml的所有框坐标_python 提取批量xml文件中的坐标信息存入txt文件 xml文件转txt文件...
  12. linux拷贝数据库文件夹,手工拷贝数据库文件建立新的数据库实例过程
  13. WPF 入门教程打印控件
  14. freemarker面试_SpringBoot基础面试题
  15. 三阶贝塞尔曲线选点_贝塞尔曲线
  16. Java IO(文件流)
  17. VMware Workstation16设置共享文件夹
  18. Ubuntu Budgie 22.04 设置中文语言并安装拼音输入法
  19. 51单片机+L298N控制步进电机【T型】加减速
  20. 深读 | 《人人都是产品经理2.0》中篇

热门文章

  1. python文本处理的函数总结
  2. win7安装python3.7失败_win7安装python3.7出现setup failed,成功解决
  3. 压缩/解压的软件 WinRAR 的去广告
  4. 华为业务流程管理体系
  5. Basler相机拍照
  6. Linux---ALSA音频工具arecord、aplay、amixer使用
  7. 智象运维干货 | HP iLo4 Smash CLP命令行参考
  8. [概率统计]商务与经济统计知识点总结 Part 2
  9. linux系统自动获取ip地址,Linux系统怎么自动获取ip地址用什么命令
  10. python卸载pip_Python 包 卸载方法