如何在他们的用户个人资料页面中重新创建动画"PATH android app "?



在路径应用程序中,用户可以向下拖动配置文件信息以显示用户的图像。我们的应用需要同样的动画。谁能指导我如何在android中创建这个动画?

我说的是http://cl.ly/MBQh

中的动画

谢谢

我认为你需要看看PullToRefresh库。这里你可以配置ListView的HeaderView。当你拉下它就会出现。如果你拉的足够多,你会导致事件发生。

你基本上有两个视图,一个用户可以拖动,一个隐藏在下面,它们都是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;
    }
});

相关内容

  • 没有找到相关文章

最新更新