我正在尝试创建一个从View
(API 21+)中心开始的圆形显示动画。我尝试将View.getLeft()
和View.getRight()
的平均值用于x,View.getTop()
和View.getBottom()
用于y(这是sample的平均值,但如果我的视图是偏移CoordinatorLayout
,值是错误的。我正在抓取OnPreDrawListener
中的值,因此已经测量了View。
答案 0 :(得分:6)
我发现使用View.getDrawingRect()
可以解决问题。
private Animator createCenteredReveal(View view) {
// Could optimize by reusing a temporary Rect instead of allocating a new one
Rect bounds = new Rect();
view.getDrawingRect(bounds);
int centerX = bounds.centerX();
int centerY = bounds.centerY();
int finalRadius = Math.max(bounds.width(), bounds.height());
return ViewAnimationUtils.createCircularReveal(view, centerX, centerY, 0f, finalRadius);
}