仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2136|回复: 18
打印 上一主题 下一主题

[学习教程] IOS编程:Android摇摆革新有用教程仓酷云

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:26 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
视图是仪表盘模型是发动机控制器是控制芯片CoreData---管理数据OBJC刚学的时候觉得CD很高深其实他是最容易用的库之一这篇文章我们就来切磋另外一种App革新的体例,就叫“摇摆革新”吧。尽人皆知,下拉革新体例已有良多App在用了,只需手指在屏幕上滑动,就能够革新界面了。

<br>
只管下拉革新体例很有用,不外我们还可使用其余体例来革新界面,也就是基于智妙手机传感器的摇摆革新。如许就不必滑下手指,只需摇摆手机就能够革新界面:

<br>
完成办法

为了完成摇摆革新功效,这里必要利用重力减速器(Accelerometer),若必要懂得更多关于怎样利用重力减速器的体例请看这里
起首,必要包管在摇摆革新大概挪动手机的时分不会产生误操纵,这里必要完成对传感器的把持,包管捕抓到的是用户想要的动摇操纵。别的,我们在完成这个逻辑操纵的时分必要和UI的代码分别,倡议不要把界面逻辑代码和别的的代码混同在一同,把它自力出来便利重用。以是起首新建一个ShakeEventManager类,这个类必要对传感器事务举行监听:
1
2
3
publicclassShakeEventManagerimplementsSensorEventListener{
..
}

为了监听传感器,这里完成了SensorEventListener接口,然后就要操纵重力减速度传感器,把我们写的这个类注册成事务监听器:
1
2
3
4
5
publicvoidinit(Contextctx){
sManager=(SensorManager)ctx.getSystemService(Context.SENSOR_SERVICE);
s=sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
register();
}

接实在现register()办法:
1
2
3
publicvoidregister(){
sManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL);
}

在触发革新事务的时分,必要对一些前提举行检测,以包管用户是成心在动摇手机:


  • 减速度必需年夜于某个临界值;
  • 必需动身一些流动的减速传感器事务;
  • 这些事务产生的工夫必需在必定的局限内。
这里把这个完成逻辑代码写在onSensorChanged办法里,这个办法在减速器的值无效的时分城市被挪用。第一步要盘算这个减速度的值。这里还必要晓得三个坐标的最年夜减速度值,然后减往重力的值在三个偏向上的份量。像Android官方教程文档中申明的那样,起首举行一层过滤,把重力的份量减失落,然后在举行别的的坐标份量处置:
1
2
3
4
5
6
7
8
9
10
11
12
privatefloatcalcMaxAcceleration(SensorEventevent){
gravity[0]=calcGravityForce(event.values[0],0);
gravity[1]=calcGravityForce(event.values[1],1);
gravity[2]=calcGravityForce(event.values[2],2);
floataccX=event.values[0]-gravity[0];
floataccY=event.values[1]-gravity[1];
floataccZ=event.values[2]-gravity[2];
floatmax1=Math.max(accX,accY);
returnMath.max(max1,accZ);
}

看看calcGravityForce这个办法:
<p>1
2
3
4
//Lowpassfilter
<p>privatefloatcalcGravityForce(
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 02:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表