Android 将动画从x、y缩放到全屏居中
我试图从(x,y)位置拍摄我的小图像,并将其放大到全屏(按屏幕宽度),然后将其移到中心 以下是我使命的视觉动机: 我已经设法计算了比例,将图像放大到全屏,但我正在努力计算轴点,使其精确到中心 为了解决这个问题,我假设X现在已经居中了。。在理解Y之后,我将简单地将相同的公式复制到X属性 所以我试着画几何图解,以便得出这样的通用公式,这就是我得到的: 下面是我根据公式编写的代码:Android 将动画从x、y缩放到全屏居中,android,scaleanimation,Android,Scaleanimation,我试图从(x,y)位置拍摄我的小图像,并将其放大到全屏(按屏幕宽度),然后将其移到中心 以下是我使命的视觉动机: 我已经设法计算了比例,将图像放大到全屏,但我正在努力计算轴点,使其精确到中心 为了解决这个问题,我假设X现在已经居中了。。在理解Y之后,我将简单地将相同的公式复制到X属性 所以我试着画几何图解,以便得出这样的通用公式,这就是我得到的: 下面是我根据公式编写的代码: public static ScaleAnimation scale2fitAnimation(final View
public static ScaleAnimation scale2fitAnimation(final View item2Scale, long duration) {
Context context = item2Scale.getContext();
int screenW = getScreenW(context);
int screenH = getScreenH(context);
int myW = item2Scale.getWidth();
int myH = item2Scale.getHeight();
int distanceFromTop = item2Scale.getBottom() - myH / 2;
int dY_belowCenter = distanceFromTop - screenH / 2;
float scaleX = (float) screenW / myW;
float pivotY = 0.5f + (float) dY_belowCenter / (screenH / 2);
ScaleAnimation scaleAnimation = new ScaleAnimation(
1f, scaleX, //fromXscale -> toXscale
1f, scaleX, //fromYscale -> toYscale
Animation.RELATIVE_TO_SELF, 0.5f, //pivotX
Animation.RELATIVE_TO_SELF, pivotY //pivotY
);
scaleAnimation.setFillAfter(true);
scaleAnimation.setDuration(duration);
//restore default shape later on..
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
item2Scale.clearAnimation();
}
}, 2000);
return scaleAnimation;
}
public static int getScreenW(Context context) {
return context.getResources().getDisplayMetrics().widthPixels;
}
public static int getScreenH(Context context) {
return context.getResources().getDisplayMetrics().heightPixels;
}
当然,称呼它很简单:
imageView.startAnimation(scale2fitAnimation(imageView,500));
无论如何结果都不好。。我可以很容易地在我的眼睛里看到,图像并没有一直到中心
我无法找出我公式中的错误,我已经一遍又一遍地重写了它,我也找不到任何数学或代码错误
有谁能在这里指导我完成这项任务,或者给我一个更简单的方法
提前感谢
注:我只处理方形图像。你不是在找这个吗:也许你不必计算轴,只需使用动画。相对父母我尝试了相对父母,但找不到任何方法使其进入中心。。如果那样比较容易的话,我想听一听。。我在你带来的链接上找不到任何有用的东西你能告诉我你在那里看到了什么吗?