给ViewPage导航栏加滑动动画
来源:互联网 发布:360自动优化工具 编辑:程序博客网 时间:2024/05/16 17:04
一、目的:
自己在学习时遇到的问题,希望能帮到需要的人。
二、大致内容:
看很多app都是可以进行滑动来进行页面之间的切换,并且导航栏下面会有一个像标记一样图片随着页面滑动。
自己还是初学者,所以就百度了下,并模仿制作了一个简陋的页面。
自己在学习时遇到的问题,希望能帮到需要的人。
二、大致内容:
看很多app都是可以进行滑动来进行页面之间的切换,并且导航栏下面会有一个像标记一样图片随着页面滑动。
自己还是初学者,所以就百度了下,并模仿制作了一个简陋的页面。
三、遇到的问题:
1、怎么实现动画的滑动?
2、点击导航栏进行切换和viewpage滑动切换会不会冲突
四、解决问题:
1.实现滑动可以根据viewpage.setOnPageChangeListener重写方法:
public void onPageSelected(int arg0) {
int currentIndex = 0;
switch (arg0) {
case 0:
currentIndex = 0;
break;
case 1:
currentIndex = 1;
break;
}
Animation animation = new TranslateAnimation((mScreenWidth / 2) * index,
(mScreenWidth / 2) * currentIndex, 0, 0);
animation.setFillAfter(true);//动画停在结束位置
animation.setDuration(300);//运行时长
test.startAnimation(animation);
index = currentIndex;
}
2. 分别给导航栏添加自定义点击事件
OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
int currentIndex = 0;
switch (v.getId()) {
case R.id.img_tv:
currentIndex = 0;
mViewPage.setCurrentItem(0);
break;
case R.id.video_tv:
currentIndex = 1;
mViewPage.setCurrentItem(1);
break;
}
Animation animation = new TranslateAnimation((mScreenWidth / 2) * temp,
(mScreenWidth / 2) * currentIndex,
0, 0);
animation.setFillAfter(true);
animation.setDuration(300);
test.startAnimation(animation);
temp = currentIndex;
}
};
在运行过程中发现有冲突两个时间中间会出现冲突:
比如从第一页滑动到第二页,此时不会有什么问题,可当你在点击第二页的导航时,会出现图片会从第一个导航下面继续进行动画滑到第二个导航下面。
注意:
这个时候需要考虑的是到底该怎么去实现动画而且两个点击事件不会冲突呢?
其实只需要实现第一个重写方法中的动画即可,因为你点击事件也进行了viewpage的页面切换,也就是说默认的发生了第一个的动画。
所以只需要在第二个点击事件中实现切换viewpage显示的当前页即可:
OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
case R.id.img_tv:
mViewPage.setCurrentItem(0);
break;
case R.id.video_tv:
mViewPage.setCurrentItem(1);
break;
}
};
总结:多思考才能发现问题,才能解决问题,才能增长知识。
1、怎么实现动画的滑动?
2、点击导航栏进行切换和viewpage滑动切换会不会冲突
四、解决问题:
1.实现滑动可以根据viewpage.setOnPageChangeListener重写方法:
public void onPageSelected(int arg0) {
int currentIndex = 0;
switch (arg0) {
case 0:
currentIndex = 0;
break;
case 1:
currentIndex = 1;
break;
}
Animation animation = new TranslateAnimation((mScreenWidth / 2) * index,
(mScreenWidth / 2) * currentIndex, 0, 0);
animation.setFillAfter(true);//动画停在结束位置
animation.setDuration(300);//运行时长
test.startAnimation(animation);
index = currentIndex;
}
2. 分别给导航栏添加自定义点击事件
OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
int currentIndex = 0;
switch (v.getId()) {
case R.id.img_tv:
currentIndex = 0;
mViewPage.setCurrentItem(0);
break;
case R.id.video_tv:
currentIndex = 1;
mViewPage.setCurrentItem(1);
break;
}
Animation animation = new TranslateAnimation((mScreenWidth / 2) * temp,
(mScreenWidth / 2) * currentIndex,
0, 0);
animation.setFillAfter(true);
animation.setDuration(300);
test.startAnimation(animation);
temp = currentIndex;
}
};
在运行过程中发现有冲突两个时间中间会出现冲突:
比如从第一页滑动到第二页,此时不会有什么问题,可当你在点击第二页的导航时,会出现图片会从第一个导航下面继续进行动画滑到第二个导航下面。
注意:
这个时候需要考虑的是到底该怎么去实现动画而且两个点击事件不会冲突呢?
其实只需要实现第一个重写方法中的动画即可,因为你点击事件也进行了viewpage的页面切换,也就是说默认的发生了第一个的动画。
所以只需要在第二个点击事件中实现切换viewpage显示的当前页即可:
OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
case R.id.img_tv:
mViewPage.setCurrentItem(0);
break;
case R.id.video_tv:
mViewPage.setCurrentItem(1);
break;
}
};
总结:多思考才能发现问题,才能解决问题,才能增长知识。
1 0
- 给ViewPage导航栏加滑动动画
- TabLayout+ViewPage导航栏
- 演示如何给导航控制加动画特效
- Android开发——ViewPage制作滑动导航界面
- viewpager滑动加标记动画滑动效果
- qt动画框架(三) 自定义tab滑动导航栏
- jquery实现导航栏随鼠标点击跟随滑动动画
- TabLayout顶部导航栏+ViewPage实现联动
- Fragment+ViewPage一步步实现底部导航栏。
- Fragment+ViewPage一步步实现底部导航栏。
- 导航栏、侧拉框、Viewpage 没有数据
- ViewPager滑动效果加导航效果
- 给页面加loadding动画
- 给点击哪个导航给哪个导航加背景
- jquery实现网站导航动画滑动效果
- Android技术——视图切换(二)借助ViewPage实现Tab滑动导航
- viewpage禁止滑动--android
- ViewPage判断左右滑动
- linux 安装php-fpm报错
- ios中青花瓷抓包过程
- Handler机制
- Objective-c的@property,属性介绍
- java
- 给ViewPage导航栏加滑动动画
- iOS开发-生成随机数
- MarkdownPad 使用 MathJax
- UItextField 一键删除小按钮
- 类与类之间的关系
- 网络相关的一些基本的命令的使用(ping、ifconfig、route、netstat)---Linux学习笔记
- python中的高阶函数map(),reduce(),filter()的区别
- java初学第一天之:安装及记事本编程
- Android.mk 文件语法规范