gpt4 book ai didi

android - 如何使用加速度计值在 Android 中移动图像

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:12 28 4
gpt4 key购买 nike

大家好,我想使用加速度计值移动图像,但我做不到。任何人都可以帮助我做到这一点,我已经在 android 开发者网站上浏览了示例代码,但无法正确理解。

最佳答案

要移动图像,请参阅 this example 中的操作方法.基本上,关键是获得某种矩阵,并根据某些输入对其进行操作,在此示例中,是用户的触摸/拖动。下面的代码不能完美运行,但它显示了执行拖动所需的关键命令和类。有关详细信息,请参阅链接文章。

Matrix matrix = new Matrix();
savedMatrix.set(matrix);
matrix.postTranslate(event.getX() - start.x)
ImageView view = (Some image view here)
view.setImageMatrix(matrix);

下一部分是以某种方式使用加速度计来获取输入。我将留给你如何最好地将两者放在一起。我的信息来源是 this article .有几个基本步骤。

第一步是注册监听器,由这段代码完成。

SensorManager  sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);

下一步是注册传感器监听器。最后一点是显示传感器监听器的外观。请注意,加速度计有 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];
}

};

您的下一步是找出适合您所需应用的 x、y 和 z 值。我建议您使用 Log.v(TAG,...) 语句获取并记录每一个。尝试倾斜它,并弄清楚你到底想做什么。调整它直到它具有正确的灵敏度水平,方法是查看它与直线向上和向下的距离,并以某种速率改变图像的 x 和 y 坐标。祝你好运!

关于android - 如何使用加速度计值在 Android 中移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6274129/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com