今天我们一起学习GutHub上一个特别强大的开源库JazzyViewPager,顾名思义,首先它是由ViewPager 的功能,更重要的是它的动画功能。官网是这样解释的:

An easy to use ViewPager that adds an awesome set of custom swiping animations. Just change your ViewPagers toJazzyViewPagers, two more steps, and you're good to Go!

即一个易用的ViewPager ,它有惊人的自定义切换动画。你只需将原来的ViewPager换成JazzyViewPagers,再做两部,就可以拥有,下面我们一起看看它的用法吧。

有兴趣的可以去官网学习哦 https://github.com/jfeinstein10/JazzyViewPager

当然学习之前先看看效果:

JazzyViewPager的各类动画封装在TransitionEffect

[html]  view plain copy
  1. public enum TransitionEffect {
  2. Standard,
  3. Tablet,
  4. CubeIn,
  5. CubeOut,
  6. Flip,
  7. Stack,
  8. ZoomIn,
  9. ZoomOut,
  10. RotateUp,
  11. RotateDown,
  12. Accordion
  13. }

我们如果想要使用某个动画的话,只需要两部就可心想事成。

1.调用setTransitionEffect(TransitionEffect.*)选择动画类型 如下所示:

[html]  view plain copy
  1. private JazzyViewPager mJazzy;
  2. /* ... */
  3. mJazzy.setTransitionEffect(TransitionEffect.*);

2.修改PagerAdapter,在addview后调用mJazzy.setObjectForPosition(obj, position);

[html]  view plain copy
  1. private JazzyViewPager mJazzy;
  2. /* ... */
  3. @Override
  4. public Object instantiateItem(ViewGroup container, final int position) {
  5. Object obj = super.instantiateItem(container, position);
  6. mJazzy.setObjectForPosition(obj, position);
  7. return obj;
  8. }

代码附上:

MainActivity

[html]  view plain copy
  1. public class MainActivity extends Activity {
  2. private JazzyViewPager mJazzy;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. setupJazziness(TransitionEffect.Tablet);
  8. }
  9. @Override
  10. public boolean onCreateOptionsMenu(Menu menu) {
  11. menu.add("Toggle Fade");
  12. String[] effects = this.getResources().getStringArray(R.array.jazzy_effects);
  13. for (String effect : effects)
  14. menu.add(effect);
  15. return true;
  16. }
  17. @Override
  18. public boolean onOptionsItemSelected(MenuItem item) {
  19. if (item.getTitle().toString().equals("Toggle Fade")) {
  20. mJazzy.setFadeEnabled(!mJazzy.getFadeEnabled());
  21. } else {
  22. TransitionEffect effect = TransitionEffect.valueOf(item.getTitle().toString());
  23. setupJazziness(effect);
  24. }
  25. return true;
  26. }
  27. private void setupJazziness(TransitionEffect effect) {
  28. mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager);
  29. mJazzy.setTransitionEffect(effect);//设置选择的动画效果
  30. mJazzy.setAdapter(new MainAdapter());
  31. mJazzy.setPageMargin(30);//设置页与页之间的间距
  32. }
  33. private class MainAdapter extends PagerAdapter {
  34. @Override
  35. public Object instantiateItem(ViewGroup container, final int position) {
  36. TextView text = new TextView(MainActivity.this);
  37. text.setGravity(Gravity.CENTER);
  38. text.setTextSize(30);
  39. text.setTextColor(Color.WHITE);
  40. text.setText("Page " + position);
  41. text.setPadding(30, 30, 30, 30);
  42. int bg = Color.rgb((int) Math.floor(Math.random()*128)+64,
  43. (int) Math.floor(Math.random()*128)+64,
  44. (int) Math.floor(Math.random()*128)+64);
  45. text.setBackgroundColor(bg);
  46. container.addView(text, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
  47. mJazzy.setObjectForPosition(text, position);//保存view
  48. return text;
  49. }
  50. @Override
  51. public void destroyItem(ViewGroup container, int position, Object obj) {
  52. container.removeView(mJazzy.findViewFromObject(position));
  53. }
  54. @Override
  55. public int getCount() {
  56. return 10;
  57. }
  58. @Override
  59. public boolean isViewFromObject(View view, Object obj) {
  60. if (view instanceof OutlineContainer) {
  61. return ((OutlineContainer) view).getChildAt(0) == obj;
  62. } else {
  63. return view == obj;
  64. }
  65. }
  66. }
  67. }

activity_main.xml

[html]  view plain copy
  1. <com.jfeinstein.jazzyviewpager.JazzyViewPager
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. android:id="@+id/jazzy_pager"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent" />

ViewPager实现动画从入门到精通(二)---JazzyViewPager使用相关推荐

  1. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  2. Kali Linux 从入门到精通(二)-安装

    Kali Linux 从入门到精通(二)-安装 Kail Linux 安装 持久加密USB安装-1 LUSK:Linux Unified Key Setup 磁盘分区加密规范 不依赖与操作系统的磁盘级 ...

  3. Mybatis从入门到精通二(入门详解)

    Mybatis从入门到精通二(想学Mybatis,看了这一篇你就不需要其他的了) 本课程分为两天第一天的请参考: https://blog.csdn.net/weixin_43564627/artic ...

  4. java从入门到精通二十三(Servlet)

    java从入门到精通二十三(Servlet) Servlet 说明 Servlet初步入门尝试 Servlet生命周期 Servlet方法说明和体系结构 方法说明 体系结构说明 一些优化封装 urlP ...

  5. Tensorflow系列 | Tensorflow从入门到精通(二):附代码实战

    作者 | AI小昕 编辑 | 安可 [导读]:本文讲了Tensorflow从入门到精通.欢迎大家点击上方蓝字关注我们的公众号:深度学习与计算机视觉. Tensor介绍 Tensor(张量)是Tenso ...

  6. unity游戏动画 从入门到住院 二 模型导入

    第一篇:unity游戏动画 从入门到住院 一 导出设置 好的,现在我们已经导出了一个干净或者不干净的FBX,总之他是可用的.至于导出如何设置请看前文链接--既然导出来了我们如何在unity中使用它呢? ...

  7. MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...

  8. 微信公众平台从入门到精通二

    第二章  微信公众平台后台介绍 一.微信公众平台后台欢迎页面 登陆公众平台首先进入的就是欢迎页,跟大部分CMS后台一样,这里会提供的是公众账号的一些运营数据 例如:欢迎你,公众平台教程的页面,里面有: ...

  9. 彻底了解DVD:从入门到精通(二)[转]

    第五章 拿什么来看DVD? 前文探讨了DVD光盘片的相关常识,本章聊一聊DVD的周边设备. DVD的周边设备无外乎音频设备(声音)和视频设备(显示).这章内容涉及很多,从音响到电视到DVD机,凡是与D ...

最新文章

  1. 了解spring大家族
  2. Letters Removing CodeForces - 899F (线段树维护序列)
  3. 什么是 Time to live TTL
  4. c语言顺序查找算法,c语言实现排序和查找所有算法
  5. python爬取toefl_spark学习进度6-Python爬取数据的四个简单实例
  6. rk3188开机失败(ump_file_open() 251)
  7. 【远程办公】5分钟一拍照、10分钟一截屏 ?
  8. 爆料者称苹果仍在继续研发iPhone屏下Touch ID
  9. ASCII码表 0-255完整版 附详细注释
  10. nginx 1.12基础知识
  11. php vld解密zend,基于PHP7维护vld扩展的总结
  12. matlab中证券组合的收益,【证券投资组合分析】基于MATLAB的证券投资组合分析_玛雅作文网...
  13. 数字滤波算法——程序判断滤波
  14. 什么是FIDO、什么是FIPS浅理解
  15. 第十二章:互联网-http.cookies: HTTP cookie-Morsel
  16. 我的小游戏上线海外AppStore完整流程心得
  17. 负载均衡主要的实现技术
  18. java计算机毕业设计springboot+vue校园出入管理系统
  19. 蓝桥杯 历届试题 小朋友排队 C++
  20. 音视频系列3:编解码技术

热门文章

  1. MAC安全(防MAC泛洪攻击)
  2. STDERR文件描述符
  3. 用css画三角形、爱心、钻石
  4. 一起Talk Android吧(第四百零五回:画布的变换)
  5. 天刀开放冬至垂钓新弄法 冬季暖心五年夜运动-新浪天边明月刀专区
  6. webpack手动配置以及自动配置
  7. 1504:Adding Reversed Numbers
  8. Android13以下都有,设计系统程序时,要避免哪些漏洞?
  9. [数学知识]高中数学-分类计数原理 分步计数原理
  10. 记录一次word添加图标目录