试试这个 :
public void startCircularReveal() {
final View view = findViewById(R.id.linearLayout);
final View startView = findViewById(R.id.button_container);
int cx = (startView.getLeft() + startView.getRight()) / 2;
int cy = (startView.getTop() + startView.getBottom()) / 2;
view.setBackgroundColor(Color.parseColor("#6FA6FF"));
int finalRadius = Math.max(cy , view.getHeight() - cy);
Animator anim = ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, finalRadius);
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
anim.setDuration(200);
view.setVisibility(View.VISIBLE);
anim.start();
}
将视图更改为您想要在其顶部显示的视图(通常是根视图),并将 startView 更改为您的“搜索”图标视图,并且 onAnimationEnd 在显示完成后执行您想要的任何操作。
更新
如果显示不在您的视图顶部,则可以通过将此视图添加到布局底部来修复它
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/custom_theme_color"
android:orientation="vertical"
android:visibility="invisible">
</LinearLayout>
确保视图“视图”设置为该布局的 id
final View view = findViewById(R.id.linearLayout);
基本上我所做的是添加一个 LinearLayout 并设置它的宽度和高度以匹配 match_parent,所以这个视图位于所有内容之上,这个视图是显示将位于顶部的位置,并确保该视图不会影响您的布局我将可见性设置为不可见,并在显示开始时将其设置为可见:
view.setVisibility(View.VISIBLE);
我希望它有所帮助。