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;
@Override
protected 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) {
}
};
@Override
protected void onPause() {
super.onPause();
manager.unregisterListener(sensorListener);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.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" >
<ImageView
android: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" />
<TextView
android: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" />
<TextView
android: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" />