CircularRevealアニメーションの使用(Android 5.0以上)
4676 ワード
学習サイト:1.高エミュレートクライアントのSearchViewhttps://mp.weixin.qq.com/s/X7l4aVY0Y_yfmec5rF4HCQ 2.CircularRevealアニメーション効果を使用してページを切り替える-CSDNブログhttp://blog.csdn.net/caroline_wendy/article/details/50756717
1.実現する機能:
1.「検索」ボタンをクリックし、検索ビューを半円アニメーションで展開し、入力方法を表示する.[キャンセル](Cancel)をクリックして、検索ビューを半円アニメーションで閉じ、入力方法を非表示にします.2.「広告」の円形ボタンをクリックし、広告ページをジャンプし、円形ボタンにはActivity間の関連アニメーションがあり、画像は円形アニメーションで表示される.「戻る」(ここではAndroidアイコン)をクリックすると、画像が円形アニメーションで消え、「広告」ボタンが元の位置に戻ります.
2.効果図:
3.コアコード
まずAndroid 5かどうかを判断する.0以上であれば、アニメーションが実行され、そうでなければビューが直接表示されます.
または
1.実現する機能:
1.「検索」ボタンをクリックし、検索ビューを半円アニメーションで展開し、入力方法を表示する.[キャンセル](Cancel)をクリックして、検索ビューを半円アニメーションで閉じ、入力方法を非表示にします.2.「広告」の円形ボタンをクリックし、広告ページをジャンプし、円形ボタンにはActivity間の関連アニメーションがあり、画像は円形アニメーションで表示される.「戻る」(ここではAndroidアイコン)をクリックすると、画像が円形アニメーションで消え、「広告」ボタンが元の位置に戻ります.
2.効果図:
3.コアコード
まずAndroid 5かどうかを判断する.0以上であれば、アニメーションが実行され、そうでなければビューが直接表示されます.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
final Animator animator = ViewAnimationUtils.createCircularReveal(
layoutSearch, layoutSearch.getWidth() - 56, 23, 0,
(float) Math.hypot(layoutSearch.getWidth(), layoutSearch.getHeight())
);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
layoutSearch.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animator) {
isOpenSearch = true;
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
animator.setDuration(300);
animator.start();
} else {
layoutSearch.setVisibility(View.VISIBLE);
isOpenSearch = true;
}
または
int cx = (layoutContainer.getLeft() + layoutContainer.getRight()) / 2;
int cy = (layoutContainer.getTop() + layoutContainer.getBottom()) / 2;
int initialRadius = layoutContainer.getWidth();
float finalRadius = btnAds.getWidth() / 2;
Animator anim = ViewAnimationUtils.createCircularReveal(layoutContainer, cx, cy, initialRadius, finalRadius);
anim.setDuration(300);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
layoutContent.setVisibility(View.GONE);
}
});
anim.start();