|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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( |
|