dha*_*ran 2 android accelerometer
大家好我想用加速度计值移动图像,但是我无法做到.任何人都可以帮我这样做,我已经在Android开发者网站上看过示例代码,但无法正确理解.
要移动图像,请查看此示例中的图像.基本上,关键是获得某种矩阵,并根据某些输入操纵它,在本例中,用户的触摸/拖动.下面的代码不能很好地运行,但它显示了执行拖动所需的关键命令和类.有关更多详细信息,请参阅链接的文章.
Matrix matrix = new Matrix();
savedMatrix.set(matrix);
matrix.postTranslate(event.getX() - start.x)
ImageView view = (Some image view here)
view.setImageMatrix(matrix);
Run Code Online (Sandbox Code Playgroud)
下一部分是以某种方式使用加速度计来获取输入.我要留给你如何最好地将两者结合在一起.我的这些信息来源是这篇文章.有几个基本步骤.
第一步是注册监听器,由此代码完成.
SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
Run Code Online (Sandbox Code Playgroud)
下一步是注册传感器监听器.最后一点是显示传感器监听器的外观.请注意,加速度计有3个输出,每个x,y和z坐标一个.
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(accelerationListener, sensor,
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
sensorManager.unregisterListener(accelerationListener);
super.onStop();
}
private SensorEventListener accelerationListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int acc) {
}
@Override
public void onSensorChanged(SensorEvent event) {
x = event.values[0];
y = event.values[1];
z = event.values[2];
}
};
Run Code Online (Sandbox Code Playgroud)
您的下一步将是确定所需应用程序的x,y和z值.我建议你使用一个Log.v(TAG,...)声明来记录并记录每一个.玩弄它倾斜,并弄清楚你想要做什么.调整它直到它具有正确的灵敏度,通过查看它从直线上下移动多远,并具有某种改变图像的x和y坐标的速率.祝好运!
| 归档时间: |
|
| 查看次数: |
4745 次 |
| 最近记录: |