[size=medium]
有时候在旅游时候不知道方向了~在小伙伴们面前掏出手机,秀一下我们自制的指南针可是很溜很溜的哟~~~虽然这不是很复杂难懂的原理和技术。下面直接进入代码咯(Just show you my code...)
主函数页面的代码:
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 CompassTestActivity extends Activity implements
SensorEventListener {
// 定义显示指南针图片的组件
private ImageView image;
// 记录指南针图片转过的角度
private float currentDegree = 0f;
// 定义真机的Sensor管理器
private SensorManager mSensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image = (ImageView) findViewById(R.id.main_iv);
// 获取真机的传感器管理服务
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
// 为系统的方向传感器注册监听器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
super.onPause();
// 取消注册
mSensorManager.unregisterListener(this);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
// 如果真机上触发event的传感器类型为水平传感器类型
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
// 获取绕Z轴转过的角度
float degree = event.values[0];
// 创建旋转动画(反向转过degree度)
RotateAnimation ra = new RotateAnimation(currentDegree, -degree,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
// 设置动画的持续时间
ra.setDuration(200);
// 设置动画结束后的保留状态
ra.setFillAfter(true);
// 启动动画
image.startAnimation(ra);
currentDegree = -degree;
}
}
}
下边是页面的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<ImageView
android:id="@+id/main_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/znz" />
</LinearLayout>
这是图片:

[/size]
分享到:
相关推荐
6. **比较与验证**:将自制的电子指南针与iPhone和华为手机内置的指南针进行比较,这是一种常见的测试和验证方法。通过比较偏差,可以评估自制指南针的精度和稳定性。 7. **PCB设计**:“新PCB15W408AS-HMC5883”...
《电子罗盘指南针制作资料》是一份详尽的DIY资源包,涵盖了从理论到实践的全过程。这份资料集合了中英文参考资料,为想要自制电子罗盘的爱好者提供了宝贵的指导。电子罗盘,又称磁罗盘,是利用地磁场进行方向指示的...
Compass 是一个简约的指南针应用。 Compass is a simple compass app. 其目标是让用户在手机上也能够使用罗盘。 Its intention is to enable users to use the luopan on their mobile phones. 功能和特性 Features ...
磁铁在生活中有很多应用,如冰箱门边、门吸、指南针、喇叭、手机、电脑、银行卡等等。磁悬浮列车也利用了磁极间的相互作用,实现了无轮运输。 六、指南针 指南针是利用磁铁来指示方向的仪器,是我国四大发明之一。...
- 磁铁广泛应用于冰箱门、门吸、指南针、喇叭、电子设备如手机和电脑,以及银行卡等。 - 磁悬浮列车运用磁极相互作用的原理实现无轮行驶。 这些知识点不仅帮助学生理解基础的磁学原理,还涉及到简单的实验操作和...
无论是通过数字指南针模式还是虚拟望远镜模式,都可以在夏夜中寻找属于自己的那一片宁静星空。在探索浩瀚宇宙的同时,感受到那份独特的清凉与宁静。 以上介绍的五款APP,覆盖了娱乐、生活、学习等多个方面,无论是...