Drehen der Tachonadelanzeige um ihre Mitte, wenn sich die Geschwindigkeit ändert

Hallo zusammen,

Ich habe eine Anwendung geschrieben, in der ich einen Tachometer mit einer Nadel habe, die vertikal auf 90 Grad eingestellt ist, und ich versuche, die Nadel mit der Geschwindigkeit, die sich jede Sekunde ändert, um ihre Mitte zu drehen (ich zeige die Geschwindigkeit in einer sich ändernden Textansicht an) zufällig von 0 bis 120)

Ich erhalte die Geschwindigkeit von einem entfernten Dienst und zeige sie in einer Textansicht an.

Wenn sich die Geschwindigkeit ändert, sollte sich die Nadelstärke des Geschwindigkeitsmessers in der Mitte entsprechend ändern. Ich meine, wenn die Geschwindigkeit 30 ist, sollte die Nadel 30 sein und so weiter im Tachometer.

Mein Code funktioniert nicht genau. Wie kann ich dieses Problem umgehen?

Hilfe wird immer geschätzt, danke.

Hier ist mein Code:

pointer1 = (ImageView) findViewById(R.id.pointer1);

double degrees= speed;
double angle = degrees * 2 * Math.PI / 360.0;

for( speed=0;speed<120;speed++){
    RotateAnimation rAnimAntiClockWise = new RotateAnimation(180-0.0f, 180-speed,
        Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

    rAnimAntiClockWise.setInterpolator(new LinearInterpolator());
    rAnimAntiClockWise.setDuration(100);
    rAnimAntiClockWise.setFillAfter(true);
    rAnimAntiClockWise.setDuration(10000);
    rAnimAntiClockWise.setRepeatCount(-1);
    rAnimAntiClockWise.setRepeatMode(2);
    pointer1.startAnimation(rAnimAntiClockWise); 
}

private void invokeService() {
    if (conn == null) {

    } else {
        try {
        System.out.println(remoteService);

        int speed = remoteService.getSpeed();

        System.out.println("myspeed" + speed);

        TextView r = (TextView) findViewById(R.id.text2);
        r.setText("" + Integer.toString(speed));
            Log.d(getClass().getSimpleName(), "invokeService()");

        } catch (RemoteException re) {
        Log.e(getClass().getSimpleName(), "RemoteException");
        }
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage