之前一次面试时,问道要实现一个效果,点击一个圆形头像放大移动跳转到另一个Activity同一图片位置,好使没有跳转痕迹。当时就简单说了一下,没有深入,今天有空就自己实现了一下。
我的想法是点击头像放大移动到固定位置,然后activity再跳转。
考虑到头像位置不一定是固定的,所以每次跳转时需要重新计算一下移动参数。动画结束时还需要有个淡入和淡出的效果
首先是准备一个缩放的动画。第一个activity里的图片尺寸按100×100,第二个activity的尺寸是300×300,所以放大的倍数是固定为3倍
那第一个动画的代码
Animation animate1 = new ScaleAnimation(1.0f, 3.0f, 1.0f, 3.0f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
重点在第二个移动的动画,由于位置不是固定的,所以要将图片从现有位置移动到你需要它移动到的位置
第一步拿到屏幕的宽和高
int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
不过由于状态栏还占着一定的高度所以要减去这部分