并行平移和缩放动画 [英] Translate and Scale animation in parallel
问题描述
我想将一些视图从任何位置移动到屏幕的中心并平行缩放.如果太复杂,按顺序翻译和缩放也是可以接受的.但我都无法实现.我认为这是枢轴点的问题.但很抱歉,我没有找到解决方案.请帮忙.可能对开发游戏的人来说很容易,我什么都没做.
I want to move some view from any position to center of screen and scale in parallel. If that's too complicated, translate and scale sequentially is also acceptable. But neither I could achieve. I think it's the problem with the pivot point. But sorry I found no solution. Please help. Maybe it's easy to those who develop games, about which I did nothing.
下面是我的代码:
private void moveViewToScreenCenter( final View view ){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( dm );
int statusBarOffset = dm.heightPixels - rootLayout.getMeasuredHeight();
int originalPos[] = new int[2];
view.getLocationOnScreen( originalPos );
int xDelta = (dm.widthPixels - view.getMeasuredWidth())/2 - originalPos[0];
int yDelta = (dm.heightPixels - view.getMeasuredHeight())/2 + statusBarOffset - originalPos[1];
AnimationSet animSet = new AnimationSet(true);
animSet.setFillAfter(true);
animSet.setDuration(1000);
animSet.setInterpolator(new BounceInterpolator());
TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta);
animSet.addAnimation(translate);
ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f);
animSet.addAnimation(scale);
view.startAnimation(animSet);
}
更新:上面的代码可以处理左上区域的图像视图,右下区域的图像对角穿过屏幕并消失.
Update: code above can handle imageview from top left region, those from bottom right region go diagonally through the screen and disappear.
推荐答案
经过好几次无望的尝试,我做到了,太惊人了.
After quite a few hopeless trials, I made it, which is too astonishing.
下面是代码,它可用于将布局中的任何视图移动到该布局的中心:
Below is the code, it can be used to move any view in a layout to the center of that layout:
private void moveViewToScreenCenter( final View view ){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( dm );
int originalPos[] = new int[2];
view.getLocationOnScreen( originalPos );
int xDelta = (dm.widthPixels - view.getMeasuredWidth() - originalPos[0])/2;
int yDelta = (dm.heightPixels - view.getMeasuredHeight() - originalPos[1])/2;
AnimationSet animSet = new AnimationSet(true);
animSet.setFillAfter(true);
animSet.setDuration(1000);
animSet.setInterpolator(new BounceInterpolator());
TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta);
animSet.addAnimation(translate);
ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f);
animSet.addAnimation(scale);
view.startAnimation(animSet);
}
这篇关于并行平移和缩放动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!