andoroid实现滑动上下滑动列表的时候动画隐藏其他视图
2015-01-30 17:38
561 查看
1.准备手势处理
LeftGesture leftGesture;
GestureDetector mGestureDetector;
final int MIN_DINTANCE_MODELY = 75;
final float MIN_DINTANCE_ORDERY = 0.1f;
Animation up, down, header_up, header_down;
2.初始化手势和动画等行为
leftGesture = new LeftGesture();// 手势监听类
mGestureDetector = new GestureDetector(getActivity(), leftGesture);
up = AnimationUtils.loadAnimation(getActivity(), R.anim.up);
down = AnimationUtils.loadAnimation(getActivity(), R.anim.down);
header_up = AnimationUtils.loadAnimation(getActivity(), R.anim.header_up);
header_down = AnimationUtils.loadAnimation(getActivity(), R.anim.header_down);
3.注册手势
class LeftGesture extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (e1 != null && e2 != null)
if ((e1.getY() - e2.getY()) > MIN_DINTANCE_MODELY) {
// 向上滑动
if ((e1.getY() - e2.getY()) > MIN_DINTANCE_ORDERY
&& Math.abs(distanceY) > MIN_DINTANCE_ORDERY) {
if (header.getVisibility() == View.VISIBLE) {
header.startAnimation(header_down);
header.setVisibility(View.GONE);
}
if (radioGroup.getVisibility() == View.VISIBLE) {
radioGroup.startAnimation(down);
radioGroup.setVisibility(View.GONE);
}
}
} else if ((e2.getY() - e1.getY()) > MIN_DINTANCE_MODELY) {
// 向下滑动
if ((e2.getY() - e1.getY()) > MIN_DINTANCE_ORDERY&& Math.abs(distanceY) > MIN_DINTANCE_ORDERY) {
if (header.getVisibility() == View.GONE) {
header.startAnimation(header_up);
header.setVisibility(View.VISIBLE);
}
if (radioGroup.getVisibility() == View.GONE) {
radioGroup.startAnimation(up);
radioGroup.setVisibility(View.VISIBLE);
}
}
}
return false;
}
}
4.准备的一些动画xml
up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="100.0%"
android:toYDelta="0.0" />
</set>
down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="0.0"
android:toYDelta="100.0%" />
</set>
LeftGesture leftGesture;
GestureDetector mGestureDetector;
final int MIN_DINTANCE_MODELY = 75;
final float MIN_DINTANCE_ORDERY = 0.1f;
Animation up, down, header_up, header_down;
2.初始化手势和动画等行为
leftGesture = new LeftGesture();// 手势监听类
mGestureDetector = new GestureDetector(getActivity(), leftGesture);
up = AnimationUtils.loadAnimation(getActivity(), R.anim.up);
down = AnimationUtils.loadAnimation(getActivity(), R.anim.down);
header_up = AnimationUtils.loadAnimation(getActivity(), R.anim.header_up);
header_down = AnimationUtils.loadAnimation(getActivity(), R.anim.header_down);
3.注册手势
class LeftGesture extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (e1 != null && e2 != null)
if ((e1.getY() - e2.getY()) > MIN_DINTANCE_MODELY) {
// 向上滑动
if ((e1.getY() - e2.getY()) > MIN_DINTANCE_ORDERY
&& Math.abs(distanceY) > MIN_DINTANCE_ORDERY) {
if (header.getVisibility() == View.VISIBLE) {
header.startAnimation(header_down);
header.setVisibility(View.GONE);
}
if (radioGroup.getVisibility() == View.VISIBLE) {
radioGroup.startAnimation(down);
radioGroup.setVisibility(View.GONE);
}
}
} else if ((e2.getY() - e1.getY()) > MIN_DINTANCE_MODELY) {
// 向下滑动
if ((e2.getY() - e1.getY()) > MIN_DINTANCE_ORDERY&& Math.abs(distanceY) > MIN_DINTANCE_ORDERY) {
if (header.getVisibility() == View.GONE) {
header.startAnimation(header_up);
header.setVisibility(View.VISIBLE);
}
if (radioGroup.getVisibility() == View.GONE) {
radioGroup.startAnimation(up);
radioGroup.setVisibility(View.VISIBLE);
}
}
}
return false;
}
}
4.准备的一些动画xml
up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="100.0%"
android:toYDelta="0.0" />
</set>
down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="0.0"
android:toYDelta="100.0%" />
</set>
相关文章推荐
- 第十二章:表视图常用UI范例——实现折叠列表,以及cell增加滑动手势
- 安卓首次进入APP的时候的导航实现上下滑动引导特效-------从上往下滑动引导
- 实现下拉列表,点击其他位置自动隐藏效果的三种方式比较
- Glide结合Recyclerview(Listview)实现列表滑动的时候图片不加载,滑动停止的时候加载
- 仿小米通讯录 右侧滑动条与带动画的悬停列表实现(一)
- Master-Detail 视图的实现, 左右滑动显示隐藏Master视图
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- 原生js实现div点击其他地方隐藏下拉列表
- iOS Swift&OC 模仿主流App 实现滑动视图隐藏导航栏
- WebView加下拉刷新的时候,如果WebView内部有上下滑动的列表,会与下拉刷新的滑动冲突
- 2014-11-3Android学习------关于自定义视图View的时候需要调用onMeasure--------GIF动画实现
- jquery实现点击展开列表同时隐藏其他列表
- Android ViewPager内容部分随手势上下滑动隐藏与显示Indicator效果的实现
- 【Android】Glide结合Recyclerview(也适用于Listview)实现列表滑动的时候图片不加载,滑动停止的时候加载(已修正Listview部分以及排版)
- Android上实现各种风格的隐藏菜单,比如左右滑动菜单、上下滑动显示隐藏菜单
- jq实现鼠标滚动的时候上下翻页,动画在翻页的时候才会执行
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- jquery实现点击展开列表同时隐藏其他列表
- 仿小米通讯录 右侧滑动条与带动画的悬停列表实现(二)
- Android 控件的相对动画实现小说阅读的上下菜单的隐藏与显示