Android(安卓)电子罗盘 --指南针(方向传感器的应用)
16lz
2021-12-10
,图片神马的在网上搜个指南针图片就好了,本来没有注释,发上来之后感觉不行,还是加上吧,方便学习
main.xml
<?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:orientation="vertical" android:gravity="center" > <ImageView android:id="@+id/compass_imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/compass" /></LinearLayout>
compass.Activity
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 ComPassActivity extends Activity implements SensorEventListener {private ImageView imageView;private float currentDegree = 0f;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.compass);imageView = (ImageView) findViewById(R.id.compass_imageView);// 传感器管理器SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);// 注册传感器(Sensor.TYPE_ORIENTATION(方向传感器);SENSOR_DELAY_FASTEST(0毫秒延迟);// SENSOR_DELAY_GAME(20,000毫秒延迟)、SENSOR_DELAY_UI(60,000毫秒延迟))sm.registerListener(ComPassActivity.this,sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_FASTEST);}//传感器报告新的值(方向改变)public void onSensorChanged(SensorEvent event) {if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {float degree = event.values[0];/*RotateAnimation类:旋转变化动画类 参数说明:fromDegrees:旋转的开始角度。toDegrees:旋转的结束角度。pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。pivotXValue:X坐标的伸缩值。pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。pivotYValue:Y坐标的伸缩值*/RotateAnimation ra = new RotateAnimation(currentDegree, -degree,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);//旋转过程持续时间ra.setDuration(200);//罗盘图片使用旋转动画imageView.startAnimation(ra);currentDegree = -degree;}}//传感器精度的改变public void onAccuracyChanged(Sensor sensor, int accuracy) {}}
更多相关文章
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- [Android(安卓)NDK]Android(安卓)JNI开发例子 ---3 在JNI中实现o
- android 自定义view
- android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
- android中传感器的学习
- 自定义带倒影和偏转的超炫Gallery
- Android(安卓)旋转屏幕捕获当前屏幕的状态
- Android(安卓)拍照及相册选图的那些坑
- android Gallery3D效果