Android系统。允许用户在布局中移动小部件

时间:2011-11-22 15:18:51

标签: android android-widget

我希望用户能够在布局窗口中移动窗口小部件(在同一窗口中拖放)。

是否有一种简单方法可以做到这一点。我看过拖放示例,这些示例大约有1000行代码,可以在屏幕和不同的小部件之间进行拖动,但我打算只在屏幕上移动小部件。

我正在使用API​​级别4,因此我无法使用http://developer.android.com/guide/topics/ui/drag-drop.html

1 个答案:

答案 0 :(得分:1)

我不确定它是否是一个很好的解决方案,但是它可行,也许你应该检查一些泄漏。

public class DraGnDroPActivity extends Activity implements OnTouchListener {

    private TextView ll1;
    private FrameLayout layout;

    private float xAxis = 0;
    private float yAxis = 0;

    private TextView newLinearLayout;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        layout = (FrameLayout) findViewById(R.id.field);

        ll1 = (TextView) findViewById(R.id.ll);
        newLinearLayout = ll1;

        ll1.setOnTouchListener(this);
    }

    public void redraw() {
        layout.removeAllViews();

        newLinearLayout.setPadding((int) xAxis, (int) yAxis, 0, 0);

        layout.addView(newLinearLayout);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE:
            xAxis = event.getX();
            yAxis = event.getY();
            redraw();

        case MotionEvent.ACTION_UP:
            System.out.println("intermediate finished");

        }
        return true;
    }
}

和XML:

<TextView
    android:id="@+id/ll"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Testing" />