これを作りたいのですが、ツッツや作り方が見つかりませんでした。(Google のウェブサイトでは Morph と呼ばれています) 誰か方法を教えてください。
編集:
レイアウトを可視に設定したいのですが、いつ shape.setVisibility(View.VISIBLE) を実行すればよいかわかりませんか? 試してみましたが、ボタンを 2 回クリックするまでアニメーションが開始されません。(最初のクリックでは、レイアウトはアニメーションなしで表示されるように設定されています)
フラグメントのレイアウト:
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:gravity="top"
android:padding="15dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/circle"
android:visibility="gone">
</LinearLayout>
<ImageButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@color/transparent"
android:contentDescription="share"
android:padding="15dp"
android:src="@drawable/ic_share_55x55px" />
断片:
ImageButton fab = (ImageButton) view.findViewById(R.id.share);
fab.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View view) {
LinearLayout shape = (LinearLayout) getActivity().findViewById(R.id.circle);
// Create a reveal {@link Animator} that starts clipping the view from
// the top left corner until the whole view is covered.
Animator animator = ViewAnimationUtils.createCircularReveal(
shape,
shape.getWidth() - 130,
shape.getHeight()- 130,
0,
(float) Math.hypot(shape.getWidth(), shape.getHeight()));
// Set a natural ease-in/ease-out interpolator.
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(400);
// Finally start the animation
animator.start();
}
});