Android 简易指南针
通过Android的Sensor和动画效果,我们可以制作一个简单的指南针,不过测试和安装的手机必须要支持方向传感器。
布局xml如下:
Activity代码:
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;public class MainActivity extends AppCompatActivity implements SensorEventListener {private SensorManager sensorManager;private Sensor sensor;private ImageView ivCompass;private float currentDegree = 0f;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);ivCompass = (ImageView) findViewById(R.id.ivCompass);}@Overrideprotected void onResume() {super.onResume();sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);/*查看手机所有传感器类型List sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);for (Sensor s : sensorList){System.out.println(s.getName());}*/sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() {super.onPause();sensorManager.unregisterListener(this);}@Overridepublic void onSensorChanged(SensorEvent event) {switch (event.sensor.getType()) {case Sensor.TYPE_ORIENTATION:float degree = event.values[0];RotateAnimation ra = new RotateAnimation(currentDegree, -degree, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);ra.setDuration(200);ivCompass.startAnimation(ra);//动画停在后来的位置ra.setFillAfter(true);currentDegree = -degree;break;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
