我需要实现一个功能,我必须根据触摸移动显示Button。假设我开始触摸移动以打开窗帘视图 浏览其他屏幕如图所示。
如上图所示,一旦我们开始向上滑动,我想要贬低行为: 如果向上滑动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();