Android(安卓)指南针
16lz
2021-01-26
开发指南针思路很简单:准备一张指南针图片,该图片上方向指针指向北方。接下来开发一个检测方向的传感器,程序检测到手机顶部绕Z轴转过多少度,让指南针图片反向转过多少度即可。
程序代码:
package org.crazyit.sensor;import android.app.Activity;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 Compass extends Activity implements SensorEventListener {// 定义显示指南针的图片ImageView znzImage;// 记录指南针图片转过的角度float currentDegree = 0f;// 定义Sensor管理器SensorManager mSensorManager;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取界面中显示指南针的图片znzImage = (ImageView) findViewById(R.id.znzImage);// 获取传感器管理服务mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);}@Overrideprotected void onResume() {super.onResume();// 为系统的方向传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onPause() {// 取消注册mSensorManager.unregisterListener(this);super.onPause();}@Overrideprotected void onStop() {// 取消注册mSensorManager.unregisterListener(this);super.onStop();}@Overridepublic void onSensorChanged(SensorEvent event) {// 获取触发event的传感器类型int sensorType = event.sensor.getType();switch (sensorType) {case Sensor.TYPE_ORIENTATION:// 获取绕Z轴转过的角度。float degree = event.values[0];<strong>// 创建旋转动画(反向转过degree度)RotateAnimation ra = new RotateAnimation(currentDegree, -degree,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);</strong>// 设置动画的持续时间ra.setDuration(200);// 运行动画znzImage.startAnimation(ra);currentDegree = -degree;break;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}}布局文件:
<?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:background="#fff" android:orientation="vertical" > <ImageView android:id="@+id/znzImage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitCenter" android:src="@drawable/znz" /></LinearLayout>
演示结果:
更多相关文章
- Android中利用OnTouchListener在ImageView中框选显示图片
- android ImageView实现上面圆角下面直角(xml实现方法)
- android 自定义view实现图形移动
- android关于内存溢出的异常
- 【推荐收藏】2017年最新的分类Android项目源码免费一次性打包下
- Android如何获取视频首帧图片
- android广告自动滚动并用picasso实现图片加载
- android百度地图自定义marker,使用网络图片
- Android(安卓)Studio图片框