在路径应用程序中,用户可以向下拖动配置文件信息以显示用户的图像。我需要在我们的应用程序中使用相同的动画。谁能指导我如何在android中创建这个动画?
谢谢
在路径应用程序中,用户可以向下拖动配置文件信息以显示用户的图像。我需要在我们的应用程序中使用相同的动画。谁能指导我如何在android中创建这个动画?
谢谢
我认为您需要查看PullToRefresh Library。在这里你可以配置你的ListView的HeaderView。然后它会出现然后你下拉。此外,如果您拉得足够多,则会导致事件完成。
你基本上有两个视图,一个用户可以拖动,一个隐藏在下面,它们都是 a 的子级RelativeLayout
。
棘手的部分是顶视图的拖动/动画。请以我之前写的这个片段为例,在 x 轴上实现类似的效果。请注意,此逻辑位于扩展的View
.-
final RelativeLayout wrapperDraggable = (RelativeLayout) findViewById(R.id.viewWrapperDraggable);
wrapperDraggable.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initPoint = new Point((int) event.getRawX(), (int) event.getRawY());
break;
case MotionEvent.ACTION_MOVE:
// Disable parent scrolling if user is dragging the view
if (dragging || Math.abs(initPoint.x - event.getRawX()) > Math.abs(initPoint.y - event.getRawY()) * 2) {
dragging = true;
getParent().requestDisallowInterceptTouchEvent(true);
} else {
getParent().requestDisallowInterceptTouchEvent(false);
}
int offset = (int) Math.max(Math.min(0, event.getRawX() - initPoint.x), -CurrentViewClass.this.getWidth() * 0.45f);
if (offset != lastOffset) {
TranslateAnimation anim = new TranslateAnimation(lastOffset, offset, 0, 0);
anim.setFillAfter(true);
anim.setFillEnabled(true);
anim.setDuration(0);
wrapperDraggable.startAnimation(anim);
lastOffset = offset;
}
break;
case MotionEvent.ACTION_UP:
if (!dragging) {
// The user clicked the view
}
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_OUTSIDE:
dragging = false;
TranslateAnimation anim = new TranslateAnimation(lastOffset, 0, 0, 0);
anim.setFillAfter(true);
anim.setDuration(300);
wrapperDraggable.startAnimation(anim);
lastOffset = 0;
break;
}
return true;
}
});
希望你觉得它有用。