Android利用Sensor(传感器)实现水平仪功能-创新互联

这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端。

创新互联专注于南充企业网站建设,响应式网站建设,商城系统网站开发。南充网站建设公司,为南充等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

利用方向传感器返回的第一个参数,实现了一个指南针小应用。


我的Android进阶之旅------>Android利用Sensor(传感器)实现指南针功能


接下来,我们利用返回的第二、三个参数实现该水平仪。因为第二个参数,反映底部翘起的角度(当顶部翘起时为负值),第三个参数可以反映右侧翘起的角度(当左侧翘起时为负值)。根据这两个角度就可以开发水平仪,实现手机哪端翘起,气泡就浮向哪端,这也是水平仪的实现思想。本实例来自于《疯狂Android讲义》


先来看下运行效果:

Android利用Sensor(传感器)实现水平仪功能Android利用Sensor(传感器)实现水平仪功能Android利用Sensor(传感器)实现水平仪功能Android利用Sensor(传感器)实现水平仪功能

该程序自定义了一个View,用来绘制透明圆盘和气泡,其中气泡的位置会动态改变。自定义View代码如下:

MyView.java


package org.crazyit.sensor; 
 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.util.AttributeSet; 
import android.view.View; 
 
public class MyView extends View { 
 // 定义水平仪仪表盘图片 
 Bitmap back; 
 // 定义水平仪中的气泡图标 
 Bitmap bubble; 
 // 定义水平仪中气泡 的X、Y座标 
 int bubbleX, bubbleY; 
 
 public MyView(Context context, AttributeSet attrs) { 
 super(context, attrs); 
 // 加载水平仪图片和气泡图片 
 back = BitmapFactory.decodeResource(getResources(), R.drawable.back); 
 bubble = BitmapFactory 
 .decodeResource(getResources(), R.drawable.bubble); 
 } 
 
 @Override 
 protected void onDraw(Canvas canvas) { 
 super.onDraw(canvas); 
 // 绘制水平仪表盘图片 
 canvas.drawBitmap(back, 0, 0, null); 
 // 根据气泡座标绘制气泡 
 canvas.drawBitmap(bubble, bubbleX, bubbleY, null); 
 } 
} 

文章标题:Android利用Sensor(传感器)实现水平仪功能-创新互联
文章来源:http://azwzsj.com/article/jijoi.html