0
 public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        //accel
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);



        setContentView(R.layout.sample);
    }

    ///////////////// Basics
    /**
     * Called when the application is in the background
     */
    public void onPause()
    {
        super.onPause();
        sensorManager.unregisterListener(this);

        //this is important because Android applications
        //do not close, they are in the background
        //so resources would be hogged otherwise
    }

    /**
     * Called when the application is started
     * or in the foreground again
     */
    public void onResume()
    {
        super.onResume();
        sensorManager.registerListener(this, sensor, rate);

    }

    //==================Accel=====================
    /**
     * Called when the values of the acceleration sensor changes
     * 
     * @param e Details about the change
     */
        public void onSensorChanged(SensorEvent e) 
        {
            float azimuth=e.values[0];

                    Log.i("azimuth",String.valueOf(azimuth));


        }

        /**
         * Called when accuracy of the sensor is changed
         * 
         * @param sen Which sensor's accuracy changed
         * @param acc The new accuracy degree
         */
        public void onAccuracyChanged(Sensor sen, int acc) 
        {
        }

在这里,我正在使用传感器管理器获取方位角值。我想知道如何使用方位角值像指南针一样旋转图像视图?谁能给出一些想法?如何在这里使用 OnDraw 函数?没有在 OnDraw 方法内绘制圆或线?

4

1 回答 1

0

这是旋转图像视图的方法:

Matrix matrix=new Matrix();
imageview.setScaleType(ScaleType.MATRIX);   //required
matrix.postRotate((float) -azimuth, imageview.getDrawable().getBounds().width()/2, 
imageview.getDrawable().getBounds().height()/2);            

imageview.setImageMatrix(matrix);

对于 API 11+,有一个简单的方法:

arrow.setRotation((float) -azimuth);

您可以查看此博客以了解圆和线罗盘。

希望这可以帮助。

于 2013-07-04T20:15:54.580 回答