我试图从(x,y)位置拍摄我的小图像,然后将其缩放到全屏(按屏幕宽度)并将其移动到中心。
我已经设法计算缩放比例以将图像放大到全屏,但是我正在努力计算枢轴点以使其到达正好的中心。
为了缓解这个问题我假设X现在已经居中了......在我理解了Y之后,我只是将相同的公式复制到X属性。
所以我试图绘制几何图形以便得出这样的通用公式,这就是我所得到的:
这里是根据公式编写的代码:
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));
结果如何不好......我可以很容易地看到我的眼睛中的图像并没有一直到达中心..
我无法弄清楚我的公式中有什么错误,我一遍又一遍地重写它,我找不到任何数学或代码错误。
任何人都可以请我指导我完成这项工作,或者向我展示一种更简单的方法..
先谢谢你们!
P.S:我只使用方形图像..