2016/05/12//
///by xbw/
/eclipse api21/
指南针小demo,整理一下,
package com.example.compass;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 {SensorManager manager;ImageView imgView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgView = (ImageView) findViewById(R.id.url_article_img);imgView.setKeepScreenOn(true);manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);}SensorEventListener sensorListener = new SensorEventListener() {private float predegree = 0;public void onSensorChanged(SensorEvent event) {float degree = event.values[0];// 数组中的第一个数是方向值RotateAnimation anim = new RotateAnimation(predegree, -degree,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);anim.setDuration(200);imgView.startAnimation(anim);predegree = -degree;// 记录这一次的起始角度作为下次旋转的初始角度}public void onAccuracyChanged(Sensor sensor, int accuracy) {}};@Overrideprotected void onPause() {super.onPause();manager.unregisterListener(sensorListener);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION);manager.registerListener(sensorListener, sensor,SensorManager.SENSOR_DELAY_GAME);}
}
xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.compass.MainActivity" ><ImageViewandroid:id="@+id/url_article_img"android:layout_width="80dp"android:layout_height="80dp"android:layout_centerHorizontal="true"android:layout_marginTop="161dp"android:background="@drawable/zhinanzhen2" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/url_article_img"android:layout_centerHorizontal="true"android:layout_marginTop="26dp"android:text="指南针"android:textAppearance="?android:attr/textAppearanceLarge" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="by xbw" /></RelativeLayout>
权限
<uses-permission android:name="android.permission.VIBRATE" />
demo传送门