Snapshot-1:メニューの添付ボタンをクリックする前に
Snapshot-2:メニューの添付ボタンをクリックした後
L以前のデバイスでLollipopアニメーションを「移植」したようです。これを行う最も簡単な方法は、 Igvalle's Material-Animation のようなライブラリを使用することです(#4を参照)。 minSdk
は16ですが、14以下で減らすことができると思います。
その他のライブラリ: TransitionsBackport 、 PreLollipopTransition 、 transitions-everywhere 。
このアニメーションを作成する場合はお知らせください!
これは、それを実装する方法を示すWebページへのリンクです。 http://blog.grafixartist.com/circular-reveal-effect-like-whatsapp-in-Android/ をお役立てください。
はい、今では2.3 +で循環表示効果を使用できます
Circular Reveal Library を使用して、この効果を実現できます。
ライブラリの依存関係を追加する
dependencies {
compile ('com.github.ozodrukh:CircularReveal:1.3.1@aar') {
transitive = true;
}
}
通常のRevealFrameLayout
とRevealLinearLayout
を使用します。心配する必要はありません。ターゲットのみがクリップされます:)
<io.codetail.widget.RevealFrameLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- Put more views here if you want, it's stock frame layout -->
<Android.support.v7.widget.CardView
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/awesome_card"
style="@style/CardView"
app:cardBackgroundColor="@color/material_deep_teal_500"
app:cardElevation="2dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
Android:layout_marginLeft="8dp"
Android:layout_marginRight="8dp"
Android:layout_marginTop="8dp"
Android:layout_width="300dp"
Android:layout_height="300dp"
Android:layout_gravity="center_horizontal"
/>
</io.codetail.widget.RevealFrameLayout>
およびコードの追加
View myView = findView(R.id.awesome_card);
// get the center for the clipping circle
int cx = (myView.getLeft() + myView.getRight()) / 2;
int cy = (myView.getTop() + myView.getBottom()) / 2;
// get the final radius for the clipping circle
int dx = Math.max(cx, myView.getWidth() - cx);
int dy = Math.max(cy, myView.getHeight() - cy);
float finalRadius = (float) Math.hypot(dx, dy);
SupportAnimator animator =
ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(1500);
animator.start();
試してみましたが、L以前のデバイスとの互換性はありませんでしたが、かなりクールに見えると思います。
GitHub で確認してください