如何通过加速计传感器移动布局?

时间:2011-09-21 19:24:32

标签: java android accelerometer

我在一个基本XML中有两个AbsoluteLayout被称为Background_layoutForeground_layout

我想通过加速计传感器向Y X Z方向移动第一个布局(Background_layout),我该怎么做?

在这里你可以看到我的XML:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/background_layout" 
android:background="@drawable/background" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
>
<AbsoluteLayout 
android:id="@+id/foreground_layout" 
android:layout_height="wrap_content" 
android:background="@drawable/foreground" 
android:layout_width="wrap_content" 
android:layout_x="0dip" 
android:layout_y="0dip">
</AbsoluteLayout>
</AbsoluteLayout>

我拥有关于方向的所有值,但我不知道如何在布局视图中使用它们。

 public void onSensorChanged(int sensor, float[] values) {
    synchronized (this) {
    if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
    float ValuX = (float) values[0];
    float ValuY = (float) values[1];
    float ValuZ = (float) values[2];
    int ResValuX  = new Integer(Float.toString(ValuX));
    int ResValuY  = new Integer(Float.toString(ValuY));
    int ResValuZ  = new Integer(Float.toString(ValuZ));
    Background.addView(Background,ResValuX);
    Background.addView(Background,ResValuY);
    Background.addView(Background,ResValuZ);
    }
    }
    }

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果从加速度计获取值,则可以通过设置其布局参数来更新视图的位置。要将视图移动到左侧,可以将值设置为左边距。

LinearLayout.LayoutParams lp = LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT
        ,LayoutParams.WRAP_CONTENT);
lp.leftMargin = 10;
view.setLayoutParameters(lp);

这应该有用。