如何创建动画地图叠加层或类似指南针的东西?

时间:2012-02-19 06:50:38

标签: android

我们非常熟悉Android上的内置地图应用程序,我想询问是否可以创建类似地图应用程序叠加层的位置叠加层?

enter image description here enter image description here

是否可以创建一个应用程序,该应用程序需要两个图像并随机设置动画以实现地图应用程序的功能,并根据位置更改图像的方向?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以在此处找到位置传感器的简要介绍:http://developer.android.com/guide/topics/sensors/sensors_position.html#sensors-pos-orient

以下代码段基于Compass.java sample,并通过旋转图像(如地图罗盘叠加层)对方向更改做出反应:。

首先在onCreate()中请求指南针服务(SENSOR.TYPE_ORIENTATION) - 方法:

    mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

然后,您需要一个侦听器方法来在更改时保存当前方向(这是使用SensorEventListener完成的)。传感器返回方位角 - 用外行的术语:罗盘角度

    public void onSensorChanged(SensorEvent event) {
        mValues = event.values; //mValues[0] contains the azimuth angle
        mView.invalidate();
    }

最后你画出了叠加层。示例代码段旋转画布,然后绘制基本形状。

    protected void onDraw(Canvas canvas) {
        // [...]

        int w = canvas.getWidth();
        int h = canvas.getHeight();
        int cx = w / 2;
        int cy = h / 2;

        canvas.translate(cx, cy);
        if (mValues != null) {
            canvas.rotate(-mValues[0]);
        }
        canvas.drawPath(mPath, mPaint);
    }

有关完整的有效代码,请参阅Compass.java