Android 简易指南针
来源:互联网 发布:淘宝卖家让我售后 编辑:程序博客网 时间:2024/05/24 06:28
通过Android的Sensor和动画效果,我们可以制作一个简单的指南针,不过测试和安装的手机必须要支持方向传感器。
布局xml如下:
<?xml version="1.0" encoding="utf-8"?><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:gravity="center" 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=".MainActivity"> <ImageView android:id="@+id/ivCompass" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/image_g" /></RelativeLayout>
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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); ivCompass = (ImageView) findViewById(R.id.ivCompass); } @Override protected void onResume() { super.onResume(); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); /*查看手机所有传感器类型 List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor s : sensorList){ System.out.println(s.getName()); } */ sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); sensorManager.unregisterListener(this); } @Override public 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; } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }}
0 0
- Android简易指南针
- Android 简易指南针
- 简易指南针
- Android传感器的使用开发、简易指南针
- Android传感器的使用开发、简易指南针
- Android中方向传感器的用法,制作简易指南针
- Android笔记(十九)制作一个简易的指南针
- 一个简易的指南针
- 简易指南针的实现
- android 指南针
- android指南针
- android指南针
- Android 指南针
- Android移动开发-调用方向传感器开发简易指南针的实现
- Android之指南针学习
- Android之指南针
- Android之指南针学习
- Android 自定义UI--指南针
- laravel基础之文件上传
- 深度学习笔记一:生成对抗网络(Generative Adversarial Nets)
- cocoapods使用指南【转】
- Java开发WebService
- mui官网
- Android 简易指南针
- 第十二周课后作业——项目一——算1*3*...*n
- const char * 、 char const * 和 char * const
- hive集群安装(hive-2.1.0)
- Qt的提示功能(三种提示框)
- TensorFlow官方教程学习 基本使用
- Cannot map 'XXXController.Create' bean method
- js 变量声明 (var使用与不使用的区别)
- 文本框模糊匹配(纯html+jquery简单实现)