Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – DragEvent.ACTION_DROP永远不会被调用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在我的 Android应用程序上使用图像拖动.
我的问题是当我停止拖动我的图像时,永远不会调用DragEvent.ACTION_DROP.

在我的日志猫中,我接到了这个电话:

01-30 13:50:25.003: I/ViewRootImpl(2198): ReporTing drop result: false

谢谢你的帮助.

这是我的代码

public class buildImage extends Activity implements OnTouchListener,OnDragListener
{
    private LinearLayout slider;
    private RelativeLayout board;

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {

        this.requestWindowFeature(Window.FEATURE_NO_titlE);

        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.build_imagE);

        //drawing = (Signatureviewmoded) findViewById(R.id.myTest);
        slider = (LinearLayout) findViewById(R.id.imageSlider);
        board = (RelativeLayout) findViewById(R.id.borad);

        setImagesSlider();

    }

    public void setImagesSlider()
    {
        ImageView image = new ImageView(this);
        image.setLayoutParams(new LinearLayout.LayoutParams(100,100));

        Drawable draw = getresources().getDrawable(R.drawable.images);

        image.setImageDrawable(draw);
        image.setOnDragListener(this);

        image.setOnTouchListener(this);

        slider.addView(imagE);

    }

    @Override
    public Boolean onTouch(View view,MotionEvent event) {
        // TODO Auto-generated method stub

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            CliPDAta data = CliPDAta.newPlaintext("tests","test");
            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
            view.startDrag(data,shadowBuilder,view,0);
            //view.setVisibility(View.INVISIBLE);
            return true;
          } else {
            return false;
          }
    }

    @Override
    public Boolean onDrag(View v,DragEvent event) {
        // TODO Auto-generated method stub

        int action = event.getAction();
          switch (event.getAction()) {
          case DragEvent.ACTION_DRAG_STARTED:
          {
              Log.i("check6","check6");
            // do nothing
            return true;
          }
          case DragEvent.ACTION_DRAG_ENTERED:
          {
              Log.i("check4","check4");
            //v.setBACkgroundDrawable(enterShapE);
              return true;
          }
          case DragEvent.ACTION_DRAG_EXITED:
          {
           // v.setBACkgroundDrawable(normalShapE);
              Log.i("check3","check3");
              return true;
          }
          case DragEvent.ACTION_DROP:
            // Dropped,reassign View to ViewGroup

              Log.i("check","check");
              addNewImage(event);

              return true;
          case DragEvent.ACTION_DRAG_ENDED:
          {
              Log.i("check2","check2");


             // addNewImage(event);

              return true;
          }
          default:
            break;
          }
          return true;
        }

    public void addNewImage(DragEvent event)
    {
        ImageView image = new ImageView(this);
        image.setLayoutParams(new LinearLayout.LayoutParams(100,100));

        Drawable draw = getresources().getDrawable(R.drawable.images);

        image.setImageDrawable(draw);

        board.addView(imagE);

        float x = event.getX();
        float y = event.getY();

        image.setX(X);
        image.setY(y);

        Log.i("margin","x " + x + " y " + y);

    }

}

我的XML

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://scheR_990_11845@as.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:id="@+id/borad"
            android:BACkground="@android:color/darker_gray"
            android:layout_above="@+id/temp"
            android:layout_height="fill_parent" >
        </RelativeLayout>

        <ScrollView
            android:layout_width="fill_parent"
            android:id="@+id/temp"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content" >

            <LinearLayout
                android:id="@+id/imageSlider"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
            </LinearLayout>
        </ScrollView>

    </RelativeLayout>

解决方法

你必须有东西放下那个图像.到目前为止,您只在图像上有一个OnDragListener.要删除该图像的位置不包含OnDragListener的任何控件,因此不会调用您的Listener.

听取OnDragListeners的控件不能被隐藏或消失,所以你必须在那里放置一些网格,其中单元格看起来是空的但不是.例如,具有透明图像的ImageView.或者将Alpha设置为0f.

至少将OnDragListener设置为内部LinearLayout,然后您将获得Drop事件.

大佬总结

以上是大佬教程为你收集整理的android – DragEvent.ACTION_DROP永远不会被调用全部内容,希望文章能够帮你解决android – DragEvent.ACTION_DROP永远不会被调用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。