微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在Android上旋转图像而不缩小

我需要在我正在开发的应用程序上创建一个指南针.所以我试图创建一个名为CompassView的新视图,它基本上扩展了imageview,显示一个位于东西南北面的位图,使用传感器来查找手机所指向的程度,并相应地旋转图像,以便创建一个实际的指南针但问题是如果我尝试将图像旋转到45度的某个角度,它会缩小.这里有一些图片可以更好地解释.

正如你所看到的那样,当我尝试围绕45旋转时,第二个图像被缩小.我想要做的是这样的:

这是我目前使用的代码

Bitmap bMap = BitmapFactory.decodeResource(getResources(),R.drawable.compass);
        Matrix xMatrix = new Matrix();
        xMatrix.reset();
        xMatrix.postRotate(360-mValue,75,75); //This is 75 because 150 is the image width
        Bitmap bMapRotate = Bitmap.createBitmap(bMap,bMap.getWidth(),bMap.getHeight(),xMatrix,true);
        setimageBitmap(bMapRotate);

任何帮助将不胜感激.谢谢

编辑:(解决方案)
我终于得到了工作,感谢接受的答案.这是我正在为任何想要知道如何工作的人使用的代码

RotateAnimation rAnimAntiClockwise = new RotateAnimation(
                    360 - mValue,360 - event.values[0],Animation.RELATIVE_TO_SELF,0.5f,0.5f);
//mValue is the angle in degrees and i subtracted it from 360 to make it anticlockwise,and event.values[0] is the same thing as mValue
rAnimAntiClockwise.setFillAfter(true);
rAnimAntiClockwise.setInterpolator(new LinearInterpolator());
rAnimAntiClockwise.setDuration(0);
startAnimation(rAnimAntiClockwise);

解决方法

你可以使用一个替代的技巧,它将像旋转一样工作,不会调整图像的大小.我实际上以45度角旋转图像,并在动画后保持变化.
rAnimAntiClockwise = new RotateAnimation(0.0f,45.0f,0.5f);
        rAnimAntiClockwise.setFillAfter(true);
        rAnimAntiClockwise.setInterpolator(new LinearInterpolator());       
            bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.rotate);     
        rAnimAntiClockwise.setDuration(100);
        img_rotate.startAnimation(rAnimAntiClockwise);

原文地址:https://www.jb51.cc/android/125954.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐