在android中如何根据触摸屏显示按钮?

在android中如何根据触摸屏显示按钮?,android,android-layout,animation,view,Android,Android Layout,Animation,View,我需要实现一个功能,我必须根据触摸移动显示按钮。假设我开始触摸“移动”以打开幕墙视图 浏览其他屏幕,如下图 如上图所示,一旦我们开始向上滑动,我想大声吼叫: 如果向上滑动10%,则按钮(B1、B2)在向上滑动10%时可以平滑地看到,其余按钮在向上滑动的这一点上不可见。但是,当SlideUp达到30%时,按钮B1、B2将显示50%,A1和A2按钮将显示20%,并且在向上滑动超过60%后,中间文本视图在ALA仍然不可见,所有控件都将可见。 我尝试了动画插值,但行为是完全不同的。任何人都可以指引我。提

我需要实现一个功能,我必须根据触摸移动显示按钮。假设我开始触摸“移动”以打开幕墙视图 浏览其他屏幕,如下图

如上图所示,一旦我们开始向上滑动,我想大声吼叫: 如果向上滑动10%,则按钮(B1、B2)在向上滑动10%时可以平滑地看到,其余按钮在向上滑动的这一点上不可见。但是,当SlideUp达到30%时,按钮B1、B2将显示50%,A1和A2按钮将显示20%,并且在向上滑动超过60%后,中间文本视图在ALA仍然不可见,所有控件都将可见。 我尝试了动画插值,但行为是完全不同的。任何人都可以指引我。提前谢谢

@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);
}
但以上这些对我来说都不起作用。不会根据幻灯片位置管理动画

我也制作了相同的动画,但这不起作用,因为一旦动画开始,将无法按照幻灯片进行管理。下面是代码:-

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();

为什么不将它们放在滚动视图中,以便它们符合您的规格?我看不出手动执行此操作的任何原因。@Usama Zafar您想说什么,这些按钮位于下一屏幕的底部,在图像和Cubiceeaout动画中都可以看到,但此动画没有按幻灯片进行控制。我不认为动画是正确的方式。看一看,然后查看坐标布局。基本上,你想根据外部滚动视图的滚动位置设置按钮视图的平移。我想这里有人只是为了-ve投票,我认为stackoverflow应该阻止这种更聪明的家伙