轻松实现Android指南针功能

 更新时间:2015年12月11日 14:29:59   作者:徐刘根  
这篇文章主要介绍了轻松实现Android指南针功能的几个关键步骤,想要实现指南针功能的朋友不要错过

本文实例为大家讲解如何轻松实现Android指南针功能,分享给大家供大家参考。具体如下:

(1)布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:orientation="vertical" >

  <ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/zn" />

</LinearLayout>

所需图片:

(2)MainActivity.java

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;

public class MainActivity extends Activity {
  private ImageView imageView;
  private SensorManager manager;
  private SensorListener listener = new SensorListener();

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    imageView = (ImageView) this.findViewById(R.id.imageView);
    imageView.setKeepScreenOn(true);
    manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
  }

  @Override
  protected void onResume() {
    Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
    manager.registerListener(listener, sensor,
        SensorManager.SENSOR_DELAY_GAME);
    super.onResume();
  }

  @Override
  protected void onPause() {
    manager.unregisterListener(listener);
    super.onPause();
  }

  private final class SensorListener implements SensorEventListener {
    private float predegree = 0;

    public void onSensorChanged(SensorEvent event) {
      float degree = event.values[0];// 存放了方向值 90
      RotateAnimation animation = new RotateAnimation(predegree, -degree,
          Animation.RELATIVE_TO_SELF, 0.5f,
          Animation.RELATIVE_TO_SELF, 0.5f);
      animation.setDuration(200);
      imageView.startAnimation(animation);
      predegree = -degree;
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
  }

}

效果如下:


希望本文所述对大家学习Android软件编程有所帮助。

相关文章

  • 20行Android代码写一个CircleImageView

    20行Android代码写一个CircleImageView

    这篇文章主要介绍了20行Android代码写一个CircleImageView,制作圆形头像,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android实现文字下方加横线

    Android实现文字下方加横线

    这篇文章主要为大家详细介绍了Android实现文字下方加横线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • Android 利用广播监听usb连接状态(变化情况)

    Android 利用广播监听usb连接状态(变化情况)

    这篇文章主要介绍了Android 利用广播监听usb连接状态,需要的朋友可以参考下
    2017-06-06
  • Android View的事件分发详解

    Android View的事件分发详解

    我们在学习View的时候,不可避免会遇到事件的分发,而往往遇到的很多滑动冲突的问题都是由于处理事件分发时不恰当所造成的。因此,深入了解View事件分发机制的原理,对于我们来说是很有必要的。
    2017-12-12
  • Android仿微信群聊头像

    Android仿微信群聊头像

    这篇文章主要为大家介绍了Android仿微信群聊头像的相关资料,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android学习教程之下拉刷新实现代码(11)

    Android学习教程之下拉刷新实现代码(11)

    这篇文章主要为大家详细介绍了Android学习教程之下拉刷新实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android给图片加文字和图片水印实例代码

    Android给图片加文字和图片水印实例代码

    本篇文章主要介绍了Android给图片加文字和图片水印实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android 简单的图片查看器源码实现

    Android 简单的图片查看器源码实现

    本篇文章主要介绍了Android 简单的图片查看器源码实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Android通过实现GridView的横向滚动实现仿京东秒杀效果

    Android通过实现GridView的横向滚动实现仿京东秒杀效果

    这篇文章主要介绍了Android通过实现GridView的横向滚动实现仿京东秒杀效果,实现代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • gradle中的properties文件详解

    gradle中的properties文件详解

    这篇文章主要介绍了gradle中的properties文件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论