旋转图像并显示旋转角度

Posted

技术标签:

【中文标题】旋转图像并显示旋转角度【英文标题】:Rotating an image, and displaying angle of rotation 【发布时间】:2012-07-02 12:24:27 【问题描述】:

我正在 android 中制作一个虚拟速度计。 我使用 RotateAnimation() 来旋转速度计指针。

有什么方法可以在旋转过程中获取针的角度位置?也就是说,如果针从 0 度旋转到 360 度,我想在动画期间显示每个点的针角度。 我使用以下代码来执行动画。

RotateAnimation rpmNeedleDeflection = new RotateAnimation(-32, 213, (float) 135, needle.getHeight()/2);
rpmNeedleDeflection.setDuration(1500);
rpmNeedleDeflection.setFillAfter(true);
needle.startAnimation(rpmNeedleDeflection);
needle.refreshDrawableState();

任何帮助请... 提前致谢。

【问题讨论】:

【参考方案1】:

你可以尝试覆盖 applyTransformation

    RotateAnimation rpmNeedleDeflection = new RotateAnimation(fromDegrees, toDegrees, ...)
                protected void applyTransformation(float interpolatedTime,Transformation t) 
                    float currentDegree = fromDegrees+(toDegrees-fromDegrees)*interpolatedTime;
                    super.applyTransformation(interpolatedTime, t);
                ;

            

【讨论】:

此代码无效。针根本没有偏转。 对不起,我错过了一行,super.applyTransformation(interpolatedTime, t); 谢谢哥们,它就像一个魅力。但是,一旦动画完成,针就会回到原来的位置。我希望它留在那里。有什么办法可以解决吗? 我想是的,首先将目标旋转设置为针,needle.setRotation(213) before needle.startAnimation(rpmNeedleDeflection);并尝试 我在使用 setRotation() 时遇到错误,“方法 setRotation(int) 未为 ImageView 类型定义”。我应该导入一些东西吗?【参考方案2】:

使用此代码将针保持在最终位置:

if(currentDegree==toDegrees)
        
            needle.refreshDrawableState();
            RotateAnimation nrpmNeedleDeflection=new rotateAnimation(toDegrees,toDegrees...);
            nrpmNeedleDeflection.setDuration(1); 
            nrpmNeedleDeflection.setFillAfter(true);
            needle.startAnimation(nrpmNeedleDeflection);
         

【讨论】:

以上是关于旋转图像并显示旋转角度的主要内容,如果未能解决你的问题,请参考以下文章

2维图像旋转(转)

图像旋转的原理与实现

Py之matplotlib:matplotlib库图表绘制中常规设置大全(交互模式清除原有图像设置横坐标显示文字/旋转角度添加图例绘图布局自动调整图像显示图像暂停)

使用Python,OpenCV旋转图像任意角度(完整和局部丢失~)

旋转模板图像并执行模板匹配

Android图片处理:识别图像方向并显示