本文共 2575 字,大约阅读时间需要 8 分钟。
在Android开发中,CircularReveal动画是一种非常有趣且实用的转场效果。通过这个动画,我们可以让用户的应用程序在切换Activity时,呈现出一种圆形展开的效果,提升用户体验。
想象一下,当用户从一个Activity切换到另一个Activity时,屏幕中央会有一个圆形区域逐渐扩大,最终覆盖整个屏幕。这个过程非常流畅,仿佛是从一个透明的层中“揭开”另一个界面。这就是CircularReveal动画的效果。
假设我们有两个ActivityA和ActivityB。目标是通过CircularReveal动画从ActivityA过渡到ActivityB。
public void presentActivity(View view) { ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, view, "transition" ); // 获取动画中心点 int revealX = (int) (view.getX() + view.getWidth() / 2); int revealY = (int) (view.getY() + view.getHeight() / 2); // 创建Intent并添加额外参数 Intent intent = new Intent(this, MainActivity.class); intent.putExtra(MainActivity.EXTRA_CIRCULAR_REVEAL_X, revealX); intent.putExtra(MainActivity.EXTRA_CIRCULAR_REVEAL_Y, revealY); //启动ActivityB并设置转场动画 ActivityCompat.startActivity(this, intent, options.toBundle());} protected void revealActivity(int x, int y) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 获取根布局 View rootLayout = findViewById(R.id.root_layout); // 计算最大半径 float finalRadius = Math.max(rootLayout.getWidth(), rootLayout.getHeight()) * 1.1f; // 创建动画 Animator circularReveal = ViewAnimationUtils.createCircularReveal( rootLayout, x, y, 0, finalRadius ); circularReveal.setDuration(400); circularReveal.setInterpolator(new AccelerateInterpolator()); // 设置可见并开始动画 rootLayout.setVisibility(View.VISIBLE); circularReveal.start(); } else { // 对于低于Lollipop版本的设备,直接销毁当前Activity finish(); }} 通过以上实现方案,可以轻松在Android应用中实现CircularReveal动画转场效果,提升用户体验。
转载地址:http://lhqfk.baihongyu.com/