fresh digitable

めんどくさかったなってことを振り返ったり振り返らなかったりするための記録

ViewAnimationUtils.createCircularReveal()にはアニメーションさせたいviewの左上を基準にした座標を渡す

ViewAnimationUtils.createCircularReveal()はcircular reveal animatorのオブジェクトを作成するためのユーティリティクラスで、 API Level 21(Lollipop)で追加された。

ViewAnimationUtils | Android Developers

アニメーションさせたいviewと、円の中心座標、円の最初の半径と最後の半径を渡す。Android公式のチュートリアル(日本語) には

// get the center for the clipping circle
int cx = (myView.getLeft() + myView.getRight()) / 2;
int cy = (myView.getTop() + myView.getBottom()) / 2;

というように親viewの左上を基準にした座標で円の中心(この例ではたまたまmyViewの中心をアニメーションの円の中心としている)を決めているが、これで良かったのはAPI Level 22までのようで、23(Marshmallow)からは

int cx = myView.getWidth() / 2;
int cy = myView.getHeight() / 2;

というようにアニメーションさせたいviewの左上を基準にした円の中心座標を渡さなければならない。ちなみに英語版のチュートリアルこのコミット で修正されたようだが、その他の言語のチュートリアルはそのままになっている様子。