像指南针一样旋转图像(不工作)

时间:2013-04-03 15:05:49

标签: android gps rotation android-imageview compass-geolocation

我想在一个活动上旋转一个特定的图像。我找到了将内容视图设置为图像或绘制内容的所有内容,但是再次全屏显示。

sensorChanged方法:

float[] mGravity2;
  float[] mGeomagnetic2;

  public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
      mGravity2 = event.values;
    if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
      mGeomagnetic2 = event.values;
    if (mGravity2 != null && mGeomagnetic2 != null) {
      float R[] = new float[9];
      float I[] = new float[9];
      boolean success = SensorManager.getRotationMatrix(R, I, mGravity2, mGeomagnetic2);
      if (success) {
        float orientation[] = new float[3];
        SensorManager.getOrientation(R, orientation);
        azimut = orientation[0]; 
      }
    }
    adjustArrow(azimut);
  }

adjustArrow方法:

private void adjustArrow(float azz) {
    // TODO Auto-generated method stub
    ImageView myIB = (ImageView) findViewById(R.id.imageView1);
    Matrix matrix=new Matrix();
    myIB.setScaleType(ScaleType.MATRIX); 
    matrix.postRotate((float) azz, 200,200);
    myIB.setImageMatrix(matrix);
}

并且在onCreate方法中我把初始图片,任意一个角度或0度设置:

ImageView myIB = (ImageView) findViewById(R.id.imageView1);

    Matrix matrix=new Matrix();
    myIB.setScaleType(ScaleType.MATRIX); 
    matrix.postRotate((float) degree(), 200,200);
    myIB.setImageMatrix(matrix);

但它不起作用,我不知道为什么。从sensorChanged方法来看,它必须采用azimut,而在“adjustArrow”方法中,它必须旋转图片。提前致谢

0 个答案:

没有答案