首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以低速旋转ImageView

如何以低速旋转ImageView
EN

Stack Overflow用户
提问于 2012-08-02 20:05:05
回答 1查看 243关注 0票数 1

我已经建立了一个指南针应用程序,它工作得非常好,但它只有一个问题,那就是动画,基本上我是使用SensorEventListener中的matrix.setRotate onSensorChanged方法旋转一个ImageView(一个nidle图像)。nidle正在旋转,但速度非常快,这似乎不太好。我想要的是以较低的速度旋转图像。就像IPhone内置的指南针一样。我们需要你的专业意见。

代码语言:javascript
复制
privateSensorEventListener mySensorEventListener= newSensorEventListener() {
            .
            .
            .
public void onSensorChanged(SensorEvent event) {
            .
            .
            .
            azimuth= (int) event.values[0];
            allowRotating=true;
            dialer.post(new RotateRunnable(azimuth));
            .
            .
            .
}};        

Runnable,在传感器数据更改时调用

代码语言:javascript
复制
private class RotateRunnable implementsRunnable {

    private int Degrees;    
    public Rotate Runnable(intDegrees) {
        this.Degrees= Degrees;
    }

    public void run() {
        if(allowRotating) {
            rotateDialer(Degrees);
            dialer.post(this);
        }
    }

}

旋转图像的方法

代码语言:javascript
复制
private void rotateDialer(int Degrees) {

    matrix.setRotate(360-Degrees, dialerWidth/ 2, dialerHeight/ 2);
    dialer.setScaleType(ScaleType.MATRIX);
    dialer.setImageMatrix(matrix);
    allowRotating=false;
}
EN

回答 1

Stack Overflow用户

发布于 2012-08-02 20:13:12

我相信,如果你平均传感器的变化,它会平滑你的动画。

代码语言:javascript
复制
azimuth = ((azimuth + (int)event.values[0]) / 2);

当然,通过保留一组值并做一些更有趣的算术,您总是可以变得更复杂。

http://en.wikipedia.org/wiki/Average

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11777051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档