gpt4 book ai didi

java - ImageView 旋转而不重新创建位图

转载 作者:行者123 更新时间:2023-11-29 05:46:31 25 4
gpt4 key购买 nike

我想旋转 ImageView 图像。这是我的代码:

Matrix mat = new Matrix();
mat.preRotate(90, ivImage.getWidth()/2, ivImage.getHeight()/2);
ivImage.setScaleType(ScaleType.MATRIX);
ivImage.setImageMatrix(mat);

但是当我点击旋转按钮时,不仅图像旋转了,它也被缩放了,因为位图比 ImageView 大。

我知道我可以用

b = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), mat, true);
ivImage.setImageBitmap(b);

但这明显更慢,并且有一些滞后。

所以我的问题是:如何在不缩放且不重新创建位图的情况下旋转图像?

最佳答案

这是我用来将图像旋转 90 度的代码。

         if(oldAngle == 0){
newAngle = oldAngle + 90;
}
else if(oldAngle == 90)
newAngle = oldAngle - 90;
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
int centerX = layoutParams.leftMargin + (view.getWidth()/2);
int centerY = layoutParams.topMargin + (view.getHeight()/2);
RotateAnimation animation = new RotateAnimation(oldAngle, newAngle, centerX, centerY);
animation.setDuration(0);
animation.setRepeatCount(2);
animation.setFillAfter(true);
view.startAnimation(animation);

oldAngle = newAngle;

希望对你有帮助...

关于java - ImageView 旋转而不重新创建位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15702539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com