完全に正常に動作するコンパス アプリを作成しましたが、問題は 1 つだけで、それはアニメーションです。基本的には、SensorEventListener で matrix.setRotate onSensorChanged メソッドを使用して ImageView(ニドル画像) を回転させています。ニドルは回転していますが、非常に速いペースで、良くないようです。私が欲しいのは、画像を低速で回転させることです。コンパスに組み込まれたiPhoneのように。あなたの専門家のアドバイスが必要です。
privateSensorEventListener mySensorEventListener= newSensorEventListener() {
.
.
.
public void onSensorChanged(SensorEvent event) {
.
.
.
azimuth= (int) event.values[0];
allowRotating=true;
dialer.post(new RotateRunnable(azimuth));
.
.
.
}};
センサーデータが変更された場合に呼び出される Runnable
private class RotateRunnable implementsRunnable {
private int Degrees;
public Rotate Runnable(intDegrees) {
this.Degrees= Degrees;
}
public void run() {
if(allowRotating) {
rotateDialer(Degrees);
dialer.post(this);
}
}
}
画像を回転させる方法
private void rotateDialer(int Degrees) {
matrix.setRotate(360-Degrees, dialerWidth/ 2, dialerHeight/ 2);
dialer.setScaleType(ScaleType.MATRIX);
dialer.setImageMatrix(matrix);
allowRotating=false;
}