在android中拖放textview

时间:2010-12-11 18:31:07

标签: android drag-and-drop

我想在android 2.X

中拖放文本视图

请看下面这张图片。 alt text

此处,“Blue”颜色表示ViewGrop,“White”表示ImageView,图像在ImageView上设置。 写“Fashion”的文字是TextView。这就是我实现结构的方式。现在我想让用户选择TextView并将其拖动到图像的任何部分,然后将其放在图像上的所需位置。

截至目前,我试图引用以下网址,但每当我使用TextView而不是Button时,事情都会变得异常。

link text

有人可以给我路线图或示例来完成它吗?

1 个答案:

答案 0 :(得分:9)

相反,请尝试将ImageView作为画布进行绘制。

ImageView CanvasView = (ImageView) findViewById(R.id.fashion_pic)

从这里你可以创建自己的Bitmap并在TouchEvent之后重新绘制它。下面的代码片段包含2.1(或2.2,我记不起来)中的错误的必要解决方法:

public void redrawImage() {

    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.fashion_pic);
    Bitmap proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
    Canvas c = new Canvas(proxy);

    //Here, we draw the background image.
    c.drawBitmap(bm, new Matrix(), null);

    //Here, we draw the text where the user last touched.
    c.drawText("Fashion", someGlobalXvariable, someGlobalYvariable, somePaint);

    CanvasView.setImageBitmap(proxy);
}

在这里,您创建了一个画布,它已将您的图片作为背景,并在x和y变量上绘制文本。现在,只需设置一个OnTouchListener:

CanvasView.setOnTouchListener( new OnTouchListener(){

    public boolean onTouch(View v, MotionEvent e) {

        someGlobalXvariable = e.getX();
        someGlobalYvariable = e.getY();
        redrawImage();
        return true;
    }
});

正如您所看到的,听众会在触摸时自动更新您的图片,文字会跟随用户的手指。由于您使用了Bitmap作为画布,因此如果您的应用想要拥有这种功能,您还可以添加对保存/加载图像的支持。

编辑:如果您从redrawImage()移动第1-3行并将它们放在其他位置,将这些对象设置为全局对象,则它可能更具有性能友好性。我会让你修补它。