指南针安卓demo
2016-05-13 21:17
471 查看
////////////////2016/05/12//////////////////
///////////////by xbw/////////////////////////
/////////////eclipse api21/////////////
指南针小demo,整理一下,
xml文件
权限
demo传送门
///////////////by xbw/////////////////////////
/////////////eclipse api21/////////////
指南针小demo,整理一下,
package com.example.compass; import android.app.Activity; import android.content.Context; 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 MainActivity extends Activity { SensorManager manager; ImageView imgView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgView = (ImageView) findViewById(R.id.url_article_img); imgView.setKeepScreenOn(true); manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); } SensorEventListener sensorListener = new SensorEventListener() { private float predegree = 0; public void onSensorChanged(SensorEvent event) { float degree = event.values[0];// 数组中的第一个数是方向值 RotateAnimation anim = new RotateAnimation(predegree, -degree, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); anim.setDuration(200); imgView.startAnimation(anim); predegree = -degree;// 记录这一次的起始角度作为下次旋转的初始角度 } public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; @Override protected void onPause() { super.onPause(); manager.unregisterListener(sensorListener); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION); manager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_GAME); } }
xml文件
<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: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="com.example.compass.MainActivity" > <ImageView android:id="@+id/url_article_img" android:layout_width="80dp" android:layout_height="80dp" android:layout_centerHorizontal="true" android:layout_marginTop="161dp" android:background="@drawable/zhinanzhen2" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/url_article_img" android:layout_centerHorizontal="true" android:layout_marginTop="26dp" android:text="指南针" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="by xbw" /> </RelativeLayout>
权限
<uses-permission android:name="android.permission.VIBRATE" />
demo传送门
相关文章推荐
- 如何在程序中使用CString
- java 在线源码网址
- 怪物AI之发现玩家(视觉范围发现系列)
- 上线步骤总结
- 一些关于dagger2的理解
- iOS开发——数据库(FMDB框架的使用)
- 在Centos7上搭建SVN服务器并实现自动同步至web目录
- 交换两个值函数swap()实现小结
- Spring_Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
- dx学习日记
- myeclipse的一个错误
- Docker容器的跨主机连接
- 例4.10 POJ3525/LA3890离海最远的点 半平面交 + 二分法 + double小数点后有效位数处理方式/printf与g++、c++的问题
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛
- java中将byte转化为字母
- poj 2349 Arctic Network(最小生成树变形)
- (OK) Fedora23—NS3—Docker—MANETs—Testing
- Spark学习笔记:Pregel API
- json文件的json.parse(data)方法时候碰到的问题
- 链表的应用