我正在尝试从(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));
结果如何不好..我很容易在我的眼中看到图像并没有一直到中心..
我找不到我的公式有什么问题,我一遍又一遍地重写它,我找不到任何数学或代码错误..
任何人都可以在这里指导我来完成这个任务,或者告诉我一个更简单的方法..
提前感谢!
PS:我只处理方形图像..