方向传感器基本是Android手机必备功能,所有这个demo基本都可以使用。
界面一个ImageView(蓝色条) 下面是自己画的圆和线(最开始没去找图,懒)
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/iv"
android:layout_marginTop="60dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/sensor"
android:contentDescription="@string/app_name" />
<com.ui.ArrowsView
android:id="@+id/arrows"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.ui.ArrowsView>
</LinearLayout>
自定义的View可以直接替换掉,蓝色条可以自己换其他图片,没有影响,下面贴Activity,无非就是通过系统服务获取传感器控制器SensorManager,注册监听,在监听器里面使用补间动画或者设置旋转setRotation。
需要注意的是使用补间动画旋转 RotateAnimation 时,在0-360 跳转间隔即△>300+时指针会多旋转方向错误,这时需要添加一个判断,当间隔过大,即跳变的时候,把 起始位置/结束位置 -360,即可。
代码如下: