Github学习之MagicViewPager实现特色轮播切换效果

本片文章学习自翔哥的库:

https://github.com/hongyangAndroid/MagicViewPager

实现效果:

Rotate Y

Rotate Down

Rotate Up

Alpha

ScaleIn

ScaleIn + Alpha + Rotate Down

效果贴了这么多,看看如何实现的吧。

添加依赖:

compile ‘com.zhy:magic-viewpager:1.0.1‘

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.wangchang.testviewpager.MainActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:clipChildren="false"
        android:background="#aadc71ff"
        >
        <android.support.v4.view.ViewPager
            android:id="@+id/id_viewpager"
            android:layout_width="match_parent"
            android:layout_marginLeft="60dp"
            android:clipChildren="false"
            android:layout_marginRight="60dp"
            android:layout_height="120dp"
            android:layout_gravity="center"
            >
        </android.support.v4.view.ViewPager>

    </FrameLayout>
</RelativeLayout>

这里面关键在于android:clipChildren=”false”属性的引用。该属性的意思就是在子View进行绘制时不要去裁切它们的显示范围,父布局子布局都需要引用。

activity:

package com.example.wangchang.testviewpager;

import android.renderscript.Type;
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.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;

import com.zhy.magicviewpager.transformer.RotateDownPageTransformer;
import com.zhy.magicviewpager.transformer.ScaleInTransformer;

public class MainActivity extends AppCompatActivity {

    private PagerAdapter adapter;
    private int[] imgs = {R.drawable.ic_activity_cn, R.drawable.ic_enterprise_cn, R.drawable.ic_personal_cn, R.drawable.ic_splash, R.mipmap.ic_launcher};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPager mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
        mViewPager.setPageMargin(20);//设置page间间距,自行根据需求设置
        mViewPager.setOffscreenPageLimit(3);//>=3
        mViewPager.setAdapter(adapter = new PagerAdapter() {
            @Override
            public int getCount() {
                return imgs.length;
            }

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

            @Override
            public Object instantiateItem(ViewGroup container, final int position) {
                ImageView imageView = new ImageView(MainActivity.this);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setImageResource(imgs[position]);
                imageView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this, "viewPager"+position, Toast.LENGTH_SHORT).show();
                    }
                });
                container.addView(imageView);
                return imageView;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView((View) object);
            }
        });//写法不变

//setPageTransformer 决定动画效果
        mViewPager.setPageTransformer(true, new
                ScaleInTransformer());
    }
}

这里关键点:

1.mViewPager.setPageMargin(20);//设置page间间距,自行根据需求设置

2. mViewPager.setOffscreenPageLimit(3);//设置每页最多显示数量

3. mViewPager.setPageTransformer(true, new ScaleInTransformer());//设置切换动画效果。

这里翔哥给出了很多很炫的效果:

AlphaPageTransformer
RotateDownPageTransformer
RotateUpPageTransformer
RotateYTransformer
NonPageTransformer
ScaleInTransformer

可以自由添加。

组合动画的实现

mViewPager.setPageTransformer(true,
    new RotateDownPageTransformer(new AlphaPageTransformer(new ScaleInTransformer())));

最后贴上自己动手实现效果:

嗯动手感觉棒棒哒!

再次感谢翔哥的无私分享!

时间: 2024-12-28 05:30:10

Github学习之MagicViewPager实现特色轮播切换效果的相关文章

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

一.概述 如果大家关注了我的微信公众号的话,一定知道我在5月6号的时候推送了一篇文章,文章名为Android超高仿QQ附近的人搜索展示(一),通过该文可以利用ViewPager实现单页显示多个Item且能够添加一些炫酷的动画效果.我当时阅读这篇文章的时候,简单做了下记录,然后想了想,可以按照该思路做一个比较特殊轮播效果,如图: 其实看到这个大家肯定不陌生,对于ViewPager切换有个很出名的库叫JazzViewPager,没错,我又跑了下JazzyViewPager的例子,看看有什么动画效果可

CSS3实现轮播切换效果

实现轮播的一般思路为在一个大盒子中对无限个元素进行切换操作,大盒子固定大小,超出盒子范围进行隐藏,而里面无限个元素可以任何堆叠,按照一定的步骤进行位置变换,已达到在可视区域呈现我们想要的效果. 看一个实例: HTML代码: 1 <div class="trans_box"> 2 <div id="transImageBox" class="trans_image_box"> 3 <div class="tr

自定义属性作业——带缩略图的轮播切换——JS学习笔记2015-5-31(第44天)

今天看着老师的教程,学习完了自定义属性的章节,同时完成了带缩略图的轮播切换: 收获:1.在写HTML结构的时候发现空格符或者换行符对样式的影响,比如<li></li><li></li>之间如果有空格或者间距会产生间隙:因为现代浏览器基本上都可以解析出来: 2.绝对定位下的水平和垂直居中问题以及复习了解决方案: 3.在这个作业中,应用到了this,自定义属性,for循环,点击事件,动态获取组元素,数组等多种基础知识,可见基础的重要性: 4.收获完成作业时候的那

JS学习笔记--轮播图效果

希望通过自己的学习收获哪怕收获一点点,进步一点点都是值得的,加油吧!!! 本章知识点:index this for if else 下边我分享下通过老师教的方式写的轮播图,基础知识实现: 1.css代码 <style> ul, ol { padding:0; margin:0; } li { list-style:none; } #box { width:600px; height:350px; border:10px solid #ccc; margin:0 auto; position:r

【学习ios之路:UI系列】实现轮播图效果(UIImageView,UIScrollView,UIPageControl,NSTimer相结合)

实现效果,在不点击的情况下,自定滚动,点击时,停止.如下图 部分代码如下: //调用NSTimer方法,自定计时 - (void)autoScroll { self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self  selector:@selector(scrollToRight) userInfo:nil repeats:YES]; } //实现触发方法 - (void)scrollToRight { [UIVie

学习随笔 原生js实现轮播

兼容性:IE7及以上,火狐和谷歌等主流浏览器 HTML&CSS 最外面1个总容器#ad,里面放1个图片容器#list,1个按钮容器#btns,2个箭头#prev和#next:#ad相对定位,其他相对于#ad绝对定位.所有图片都是绝对定位,会重叠在一起,默认z-index:0:给选中的图片和按钮分别设置class为selected和on,其中选中图片的z-index:1,才会出现在顶层.JS 手动轮播:把选中图片和按钮添加相应类名selected和on,把原来选中的按钮和图片取消相应类名.需要用循

使用原生js实现轮播图效果

知乎原文 我的博客 微信公众号这几天在逛网站的时候,发现很多网站都有轮播图这个效果,所以我就仿照小米的官网用原生js写了一个轮播图效果,希望大家喜欢.这是我发布在github上的最后实现的效果:https://heternally.github.io/... 下面我简单跟大家说一下我实现该效果的过程,如果有什么错误的地方,欢迎大家说出来,以方便大家互相学习. 我相信前面简单的html+css大家应该都会,我这里就不说了,简单给大家展示一下代码: HTML部分 <div id="wrap&q

AngularJS:实现轮播图效果

要实现这个功能,可以https://github.com/sroze/ngInfiniteScroll这个第三方控件实现的.实现步骤如下: 1. 下载ng-infinite-scroll.js程序http://sroze.github.io/ngInfiniteScroll/ 目前版本是1.0.0 2. 如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(

js实现轮播图效果(附源码)--原生js的应用

1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="Author" content="奇客艺术"> <meta name="keyword" content="关键字"> <meta name=