android:如何通过拖放在图形屏幕中的特定位置移动小部件

时间:2011-09-16 07:04:48

标签: android

我对Android开发很新,请赐教 如何通过拖放操作在图形屏幕中的特定位置移动按钮,文本视图等小部件..

提前致谢

Akshat

2 个答案:

答案 0 :(得分:2)

尝试以下代码: -

int x_cord, y_cord;
RelativeLayout.LayoutParams layoutParams1;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        if (v == mImageViewEye1) {
            System.out.println("Eye1 is Clicked...");
            layoutParams1 = (RelativeLayout.LayoutParams) mImageViewEye1
                    .getLayoutParams();
            switch (event.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                x_cord = (int) event.getRawX();
                y_cord = (int) event.getRawY();
                scaleimage(layoutParams1);
                layoutParams1.topMargin = y_cord - 75;
                mImageViewEye1.setLayoutParams(layoutParams1);
                break;
            default:
                break;
            }
        }
        return true;
    }

    public void scaleimage(RelativeLayout.LayoutParams layoutParams) {
        if (x_cord > windowwidth) {
            x_cord = windowwidth;
        }
        if (y_cord > windowheight) {
            y_cord = windowheight;
        }
        layoutParams.leftMargin = x_cord - 25;
        layoutParams.topMargin = y_cord - 75;
    }

如果您有任何查询,请告诉我。

答案 1 :(得分:0)

您将在View.onTouchEvent中检测拖动移动。 然后你可以解释移动并将其应用于小部件。

您可以使用View.setAnimation更改绘制窗口小部件的位置。但它可能不会改变它的真实位置,因此在之前的位置上仍会发生触摸。

或者您可以修改窗口小部件的LayoutParams,但应用于View的真实LayoutParams实例取决于添加窗口小部件的父ViewGroup。最简单的方法是将您的小部件存储在AbsoluteLayout中,并在AbsoluteLayout.LayoutParams中更改位置,其中position是x / y。