上效果图,这个效果图应该图片的原因就很粗糙,砖友,放下砖,放过在下吧.

大家能看到左右俩个图都是有点斜度的,下面就实现这个UI效果吧

1.直接上布局

****.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"android:clipChildren="false"android:gravity="center"android:layerType="software"><android.support.v4.view.ViewPagerandroid:id="@+id/gallery"android:layout_width="300dp"android:layout_height="500dp"/>
</LinearLayout>

android:clipChildren=”false”属性

android:clipChildren的意思:是否限制子View在其范围内,默认值为true。在这个例子中我们想要实现画廊效果,所以android:clipChildren
设置为false,而且还必须是在ViewPager的父布局设置,否则没有效果的。同时注意要实现图片中的效果,ViewPager的宽度是不能设为match_parent的,ViewPager宽度与卡片的宽度设置一致即可。

2.创建一个MyTransformation的类,在这直接把包给大家cp上了,为了防止大家导错包(看看我多么贴心)

这是个实现扁平切换,中间放大,两边模糊的动画

import android.graphics.Camera;
import android.support.v4.view.ViewPager;
import android.view.View;public class MyTransformation implements ViewPager.PageTransformer {private static final float MIN_SCALE = 0.85f;private static final float MIN_ALPHA = 0.5f;private static final float MAX_ROTATE = 30;private Camera camera = new Camera();@Overridepublic void transformPage(View page, float position) {float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));float rotate = 20 * Math.abs(position);if (position < -1) {} else if (position < 0) {page.setScaleX(scaleFactor);page.setScaleY(scaleFactor);page.setRotationY(rotate);} else if (position >= 0 && position < 1) {page.setScaleX(scaleFactor);page.setScaleY(scaleFactor);page.setRotationY(-rotate);} else if (position >= 1) {page.setScaleX(scaleFactor);page.setScaleY(scaleFactor);page.setRotationY(-rotate);}}}

3.在******Activity中添加

//设置viewpager的切换动画
viewPager.setOffscreenPageLimit(5);
viewPager.setPageTransformer(true, new MyTransformation());

加以前先findViewById

4.将父布局的touch事件传递给viewpager,解决触摸滑动ViewPager左右两边的页面无反应的问题

findViewById(R.id.activity_main).setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {return viewPager.dispatchTouchEvent(motionEvent);}
});

5.重点的适配器来了

class GalleryAdapter extends PagerAdapter {private int selectPos = 0;private List<View> viewList = new ArrayList<View>();Integer[] images = {R.drawable.zfb,R.drawable.add,R.drawable.weixin};public GalleryAdapter() {}@Overridepublic int getCount() {return images.length;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.gallery_item, null);ImageView poster = (ImageView) view.findViewById(R.id.poster);poster.setImageResource(images[position]);// view.setImageBitmap(ImageUtil.getReverseBitmapById(images[i],Gallery.this));viewPager.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {viewPager.removeView((View) object);}
}

6. 3D画廊到这里就完成了,快运行自己的项目看看吧

上面的适配器代码还需要自己去创建一个适配器写哦 不要向我学习 emmmm

希望能对您有所帮助

Android ViewPager实现3D画廊效果相关推荐

  1. [原创]自定义ViewPager实现3D画廊效果

    经常在群里看到有些开发者在提问:怎么实现3D画廊效果,没思路. 有人出谋划策,你重写onTouch,在里面去判断:或者你去重写滑动监听事件,滑动的时候去动态设置左右两边的图片的大小和缩放效果.可能你们 ...

  2. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  3. android viewPage 打造3d画廊

    之前学习时学习了ViewPager打造3d画廊,今天找出来把他贴上去,给需要的小伙伴用!废话不多说直接贴! 一.Activity /*** 3da 画廊*/ public class Main3Act ...

  4. 使用RecyclerView实现旋转3D画廊效果

    3D旋转画廊效果实现有哪些方式? 1.Gallery实现(官方已不推荐使用). 2.RecyclerView通过自定义LayoutManager实现. 一.简介 RecyclerView是google ...

  5. Android自带组件之Gallery 实现3D画廊效果

    1: 首先我们要了解到这个该控件的常用属性: 如图: 2:通过该组件定义属于我们自己的组件 iphone 中的coverflow中图片切换是有旋转和缩放效果的,而自带的gallery中并没有实现.因此 ...

  6. android画廊效果的轮播图,轮播图(3d画廊效果)

    首先需要将轮播图的依赖导入 implementation 'com.github.xiaohaibin:XBanner:1.6.1' 接下来就是在项目目录下bulidgradle中导入(allproj ...

  7. Android 简单的3D动画效果

    在Android Api11之后,加入了属性动画,参加我的另一篇博文:Android Property Animation 属性动画 也加入了一些View的属性和对应的操作方法: iv.setTran ...

  8. ViewPager实现Gallery画廊效果——仿慕课网app-求职路线计划-效果(一)

    效果图: 大体上就是这个样子,可能不太清楚 但是大家知道是什么效果就好啦~ (PS: 图中没有加高斯模糊图,后边 我会加上) 下面来分析一下这个布局 底层用一个ImageView 上层用一个定制的Vi ...

  9. ViewPager实现Gallery画廊效果——仿慕课网app-求职路线计划-效果(二)

    今晚给之前的写的收个尾 http://blog.csdn.net/codenoodles/article/details/50992113 前边没有看的可以先看一下效果. 之前写的没有背景的模糊图片效 ...

  10. android ViewPager 不带滑动效果切换item

    其实这是很简单的,但是今晚脑袋晕乎乎的 绕了一大圈,记录一下 以警同类人. 只需要在setCurrentItem传参数时这么写:mViewPager.setCurrentItem(item序号,fal ...

最新文章

  1. centos7 nginx配置php7,centos7安装并配置nginx+php,centos7nginx
  2. Java性能优化(12):最小化类和成员可访问能力
  3. VTK修炼之道78:交互与拾取_点拾取
  4. c#设计模式-建造者模式
  5. typedef函数指针_C语言函数指针之回调函数
  6. 编写python扩展模块_《深度剖析CPython解释器》27. 使用Python/C API编写扩展模块:编写扩展模块的整体流程...
  7. 黑客利用未修复的 Atlassian 服务器攻击电信运营商和 ISP
  8. Navicat for PostgreSQL 怎么维护数据库和表
  9. Spring的声明式事务
  10. Android aidl Binder框架浅析
  11. WINDOWS10的任务管理器不能自动刷新?
  12. 使用FFMPEG将非YUV420p压缩成JPG
  13. Kafka工具--雅虎CMAK
  14. win10文件服务器ssd当缓存盘,Win10怎么启用设备上的写入缓存|提高固态硬盘性能方法...
  15. socket 读、写字节流数据
  16. 采用MCaaS模式 SAP为有孚网络提供基于HANA的解决方案及服务
  17. 2019春招前端面试: 闯关记(精排精校)
  18. 文字识别(二)--字符识别技术总览
  19. 核心频率个加速频率_RTX 3080超频研究:功耗墙和频率最关键,高频稳定看用料...
  20. [P1373]小a和uim之大逃离

热门文章

  1. ad10搜索快捷键_AD中常用的快捷方式
  2. A类业余无线电台操作证书知识总结
  3. mysql端口被占用了如何解决_如何解决Win10安装MYSQL端口被占用?
  4. 2022年3月份报告合集(共353份)
  5. Idea不识别Java项目
  6. sql 语句,主键外键详解
  7. Minimal Viable Plasma
  8. scanf 用法及陷阱(转)
  9. 计算机视觉大型攻略 —— 立体视觉(4)立体匹配算法简介与SGM
  10. 2021 上半年软考软件设计师真题完整版