如何根据Android中的屏幕触摸显示按钮?

时间:2016-03-10 07:39:52

标签: android android-layout animation view

我需要实现一个功能,我必须根据触摸移动显示Button。假设我开始触摸移动以打开窗帘视图 浏览其他屏幕如图所示。enter image description here

如上图所示,一旦我们开始向上滑动,我想要贬低行为: 如果向上滑动10%,则按钮(B1,B2)可以平滑地看到最多10%,并且在此处向上滑动时将看不到休息按钮。但是当SlideUp高达30%然后按钮B1时,B2将可见50%,A1和A2按钮可​​见20%,中间textview仍然在alla中不可见,超过60%向上滑动后所有控件都可见。            我尝试过动画Interpolater,但行为完全不同。任何人都可以指导我。提前谢谢。

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()){
        case MotionEvent.ACTION_MOVE:
            Log.i("Coord", "Val :: "+(1030 - event.getX()));
            if(544 - event.getX() >= 0){
                Log.i("Coord", "Show");
                mRecentMedia.setVisibility(View.VISIBLE);
                mCamera.setVisibility(View.VISIBLE);
                mMenuar.setVisibility(View.VISIBLE);

                mRecentMedia.animate().translationY(0).setInterpolator(new AnticipateInterpolator(0.5f)).start();
                mCamera.animate().translationY(0).setInterpolator(new AnticipateInterpolator(2)).start();
                mMenuar.animate().translationY(0).setInterpolator(new AnticipateInterpolator(2)).start();

            }else{
                Log.i("Coord", "Hide");
                mRecentMedia.animate().translationY(200).setInterpolator(new AnticipateInterpolator(0.5f)).start();
                mCamera.animate().translationY(200).setInterpolator(new AnticipateInterpolator(2)).start();
                mMenuar.animate().translationY(200).setInterpolator(new AnticipateInterpolator(2)).start();
            }
            break;
    }

    return super.onTouchEvent(event);
}

但上面对我不起作用。不会按照幻灯片位置管理动画。

我也制作相同的动画,但这不起作用,因为一旦动画开始不按照SlideUp代码管理它,如下: -

AnimatorSet set = new AnimatorSet();
        AnimatorSet set1 = new AnimatorSet();
        set1.playTogether(
                Glider.glide(Skill.CubicEaseOut, 1500, ObjectAnimator.ofFloat(mRecentMedia, "translationY", 210, 0))
        );
        set1.setStartDelay(300);

        set.playTogether(
                Glider.glide(Skill.CubicEaseOut, 1500, ObjectAnimator.ofFloat(mCamera, "translationY", 210, 0))
        );

        set.playTogether(
                Glider.glide(Skill.CubicEaseOut, 1500, ObjectAnimator.ofFloat(mMenuar, "translationY", 210, 0))
        );

        set1.setDuration(1500);
        set1.start();
        set.setDuration(1500);
        set.start();

0 个答案:

没有答案