我目前正在尝试做一个伪循环揭示,它将在 Lollipop 以下的 Android API 级别上工作。所以,我有一个浮动操作按钮 (FAB),我希望(按下时)垂直移动到 RelativeLayout(在单击之前它位于 RelativeLayout 之外),然后按某个因子缩放,使其看起来像一个显示。
我认为在 FAB 上使用 .setClipBounds() 会限制 RelativeLayout 区域中的缩放动画,但不幸的是,缩放动画会扩展以接管整个 Activity 区域。这是 FAB 的点击监听器中的代码:
circleFab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int cardHeight = relativeCardBuild.getHeight();
int cardWidth = relativeCardBuild.getWidth();
Log.i("RELAT H", "" + cardHeight);
Log.i("RELAT W", "" + cardWidth);
circleFab
.animate()
.translationY(-(cardHeight / 2))
.setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(200).start();
tickFab.animate().alpha(0.0f).setDuration(200).start();
circleFab.setClipBounds(new Rect(relativeCardBuild.getLeft(),
relativeCardBuild.getTop(), relativeCardBuild
.getRight(), relativeCardBuild.getBottom()));
Log.i("left ", relativeCardBuild.getLeft()+"");
Log.i("top ", relativeCardBuild.getTop()+"");
Log.i("right ", relativeCardBuild.getRight()+"");
Log.i("bottom ", relativeCardBuild.getBottom()+"");
circleFab.animate().setStartDelay(100).scaleX(20.0f)
.scaleY(20.0f).setDuration(500).start();
}
});
relativeCardBuild 的左、上、右和下点的记录值是正确的,所以我确实正确设置了 circleFab 布局的剪辑边界(它是一个 FrameLayout,包含一个椭圆形可绘制和一个位图可绘制)。尽管如此,比例动画仍然占据了整个活动屏幕。
我是否完全误解了 .setClipBounds() 在这种情况下的作用?