ViewPager实现动画从入门到精通(二)---JazzyViewPager使用
今天我们一起学习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
![](https://code.csdn.net/assets/CODE_ico.png)
- public enum TransitionEffect {
- Standard,
- Tablet,
- CubeIn,
- CubeOut,
- Flip,
- Stack,
- ZoomIn,
- ZoomOut,
- RotateUp,
- RotateDown,
- Accordion
- }
我们如果想要使用某个动画的话,只需要两部就可心想事成。
1.调用setTransitionEffect(TransitionEffect.*)选择动画类型 如下所示:
![](https://code.csdn.net/assets/CODE_ico.png)
- private JazzyViewPager mJazzy;
- /* ... */
- mJazzy.setTransitionEffect(TransitionEffect.*);
2.修改PagerAdapter,在addview后调用mJazzy.setObjectForPosition(obj, position);
![](https://code.csdn.net/assets/CODE_ico.png)
- private JazzyViewPager mJazzy;
- /* ... */
- @Override
- public Object instantiateItem(ViewGroup container, final int position) {
- Object obj = super.instantiateItem(container, position);
- mJazzy.setObjectForPosition(obj, position);
- return obj;
- }
代码附上:
MainActivity
![](https://code.csdn.net/assets/CODE_ico.png)
- public class MainActivity extends Activity {
- private JazzyViewPager mJazzy;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- setupJazziness(TransitionEffect.Tablet);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- menu.add("Toggle Fade");
- String[] effects = this.getResources().getStringArray(R.array.jazzy_effects);
- for (String effect : effects)
- menu.add(effect);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getTitle().toString().equals("Toggle Fade")) {
- mJazzy.setFadeEnabled(!mJazzy.getFadeEnabled());
- } else {
- TransitionEffect effect = TransitionEffect.valueOf(item.getTitle().toString());
- setupJazziness(effect);
- }
- return true;
- }
- private void setupJazziness(TransitionEffect effect) {
- mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager);
- mJazzy.setTransitionEffect(effect);//设置选择的动画效果
- mJazzy.setAdapter(new MainAdapter());
- mJazzy.setPageMargin(30);//设置页与页之间的间距
- }
- private class MainAdapter extends PagerAdapter {
- @Override
- public Object instantiateItem(ViewGroup container, final int position) {
- TextView text = new TextView(MainActivity.this);
- text.setGravity(Gravity.CENTER);
- text.setTextSize(30);
- text.setTextColor(Color.WHITE);
- text.setText("Page " + position);
- text.setPadding(30, 30, 30, 30);
- int bg = Color.rgb((int) Math.floor(Math.random()*128)+64,
- (int) Math.floor(Math.random()*128)+64,
- (int) Math.floor(Math.random()*128)+64);
- text.setBackgroundColor(bg);
- container.addView(text, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- mJazzy.setObjectForPosition(text, position);//保存view
- return text;
- }
- @Override
- public void destroyItem(ViewGroup container, int position, Object obj) {
- container.removeView(mJazzy.findViewFromObject(position));
- }
- @Override
- public int getCount() {
- return 10;
- }
- @Override
- public boolean isViewFromObject(View view, Object obj) {
- if (view instanceof OutlineContainer) {
- return ((OutlineContainer) view).getChildAt(0) == obj;
- } else {
- return view == obj;
- }
- }
- }
- }
activity_main.xml
![](https://code.csdn.net/assets/CODE_ico.png)
- <com.jfeinstein.jazzyviewpager.JazzyViewPager
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:id="@+id/jazzy_pager"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
ViewPager实现动画从入门到精通(二)---JazzyViewPager使用相关推荐
- java从入门到精通二十四(三层架构完成增删改查)
java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...
- Kali Linux 从入门到精通(二)-安装
Kali Linux 从入门到精通(二)-安装 Kail Linux 安装 持久加密USB安装-1 LUSK:Linux Unified Key Setup 磁盘分区加密规范 不依赖与操作系统的磁盘级 ...
- Mybatis从入门到精通二(入门详解)
Mybatis从入门到精通二(想学Mybatis,看了这一篇你就不需要其他的了) 本课程分为两天第一天的请参考: https://blog.csdn.net/weixin_43564627/artic ...
- java从入门到精通二十三(Servlet)
java从入门到精通二十三(Servlet) Servlet 说明 Servlet初步入门尝试 Servlet生命周期 Servlet方法说明和体系结构 方法说明 体系结构说明 一些优化封装 urlP ...
- Tensorflow系列 | Tensorflow从入门到精通(二):附代码实战
作者 | AI小昕 编辑 | 安可 [导读]:本文讲了Tensorflow从入门到精通.欢迎大家点击上方蓝字关注我们的公众号:深度学习与计算机视觉. Tensor介绍 Tensor(张量)是Tenso ...
- unity游戏动画 从入门到住院 二 模型导入
第一篇:unity游戏动画 从入门到住院 一 导出设置 好的,现在我们已经导出了一个干净或者不干净的FBX,总之他是可用的.至于导出如何设置请看前文链接--既然导出来了我们如何在unity中使用它呢? ...
- MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...
- 微信公众平台从入门到精通二
第二章 微信公众平台后台介绍 一.微信公众平台后台欢迎页面 登陆公众平台首先进入的就是欢迎页,跟大部分CMS后台一样,这里会提供的是公众账号的一些运营数据 例如:欢迎你,公众平台教程的页面,里面有: ...
- 彻底了解DVD:从入门到精通(二)[转]
第五章 拿什么来看DVD? 前文探讨了DVD光盘片的相关常识,本章聊一聊DVD的周边设备. DVD的周边设备无外乎音频设备(声音)和视频设备(显示).这章内容涉及很多,从音响到电视到DVD机,凡是与D ...
最新文章
- 了解spring大家族
- Letters Removing CodeForces - 899F (线段树维护序列)
- 什么是 Time to live TTL
- c语言顺序查找算法,c语言实现排序和查找所有算法
- python爬取toefl_spark学习进度6-Python爬取数据的四个简单实例
- rk3188开机失败(ump_file_open() 251)
- 【远程办公】5分钟一拍照、10分钟一截屏 ?
- 爆料者称苹果仍在继续研发iPhone屏下Touch ID
- ASCII码表 0-255完整版 附详细注释
- nginx 1.12基础知识
- php vld解密zend,基于PHP7维护vld扩展的总结
- matlab中证券组合的收益,【证券投资组合分析】基于MATLAB的证券投资组合分析_玛雅作文网...
- 数字滤波算法——程序判断滤波
- 什么是FIDO、什么是FIPS浅理解
- 第十二章:互联网-http.cookies: HTTP cookie-Morsel
- 我的小游戏上线海外AppStore完整流程心得
- 负载均衡主要的实现技术
- java计算机毕业设计springboot+vue校园出入管理系统
- 蓝桥杯 历届试题 小朋友排队 C++
- 音视频系列3:编解码技术