如何定义的目标拖放图片 [英] how defined target for drag and drop image

查看:138
本文介绍了如何定义的目标拖放图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的节目,我4 ImageView的,imageview1和imageview2应拖放到imageview3和imageview4

imageview1应imageview3仅下降,如果DROP掉另一个地方应该回到原来的地方

imageview2应该只滴在imageview4如果DROP掉另一个地方应该回到原来的地方。

我写code和我不知道如何定义imageview1和imageview2的目标,并说,如果drope地方exept这一目标回原来的地方。

 包com.test.dragplease;进口android.app.Activity;
进口android.content.ClipData;
进口android.os.Bundle;
进口android.view.DragEvent;
进口android.view.MotionEvent;
进口android.view.View;
进口android.view.View.DragShadowBuilder;
进口android.view.View.OnDragListener;
进口android.view.View.OnTouchListener;
进口android.view.ViewGroup;
进口android.widget.ImageView;
进口android.widget.LinearLayout;公共类DragpleaseActivity延伸活动{
/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);    findViewById(R.id.imageView1).setOnTouchListener(新MyTouchListener());
    findViewById(R.id.imageView2).setOnTouchListener(新MyTouchListener());    findViewById(R.id.imageView3).setOnDragListener(新MyDragListener());
    findViewById(R.id.imageView4).setOnDragListener(新MyDragListener());
}私人final类MyTouchListener实现OnTouchListener {
    公共布尔onTouch(查看视图,MotionEvent motionEvent){
      如果(motionEvent.getAction()== MotionEvent.ACTION_DOWN){
        ClipData数据= ClipData.newPlainText(,);
        DragShadowBuilder shadowBuilder =新View.DragShadowBuilder(视图);
        view.startDrag(数据,shadowBuilder,查看,0);
        view.setVisibility(View.INVISIBLE);
        返回true;
      }其他{
        返回false;
      }
    }
  }
类MyDragListener实现OnDragListener {
    @覆盖
    公共ondrag当布尔(视图V,事件的dragEvent){
      // INT行动= event.getAction();
      开关(event.getAction()){
      案例DragEvent.ACTION_DRAG_STARTED:
        // 没做什么
        打破;
      案例DragEvent.ACTION_DRAG_ENTERED:
          // 没做什么
        打破;
      案例DragEvent.ACTION_DRAG_EXITED:
        打破;
      案例DragEvent.ACTION_DROP:
        //丢弃,重新分配视图的ViewGroup
            查看查看=(查看)event.getLocalState();
            // ClipData CD = event.getClipData();
            //项目项目= cd.getItemAt(0);
            //字符串RESP = item.coerceToText(上下文)的ToString();
            //停止显示它在哪里它被拖前视图
            view.setVisibility(View.INVISIBLE);            //视图拖项目上被丢弃
            ImageView的DropTarget的=(ImageView的)V;            //观点被拖放
            ImageView的下降=(ImageView的)视图。        // dropped.setEnabled(假);            //更新目标视图中的文本,以反映该数据被丢弃
            dropTarget.setBackgroundDrawable(view.getBackground());
            dropTarget.setTag(dropped.getId());
        打破;
      案例DragEvent.ACTION_DRAG_ENDED:          返回false;
      默认:
        打破;
      }
      返回true;
    }
  }
}


解决方案

在onTouchListener我应该X和Y的形象我拖累了这样

 私人final类MyTouchListener实现OnTouchListener {
    公共布尔onTouch(查看视图,MotionEvent事件){        最终诠释MX =(int)的event.getX();
       最终诠释我=(int)的event.getY();
      如果(event.getAction()== MotionEvent.ACTION_DOWN){
        ClipData数据= ClipData.newPlainText(,);
        DragShadowBuilder shadowBuilder =新View.DragShadowBuilder(视图);
        view.startDrag(数据,shadowBuilder,查看,0);
        view.setVisibility(View.INVISIBLE);
        返回true;
      }其他{
        返回false;
      }
    }
  }

和在action_drop我把X和Y的形象我释放,像这样

 情况下DragEvent.ACTION_DROP:
         v.getX();
         v.getY();        //丢弃,重新分配视图的ViewGroup
            查看查看=(查看)event.getLocalState();
            // ClipData CD = event.getClipData();
            //项目项目= cd.getItemAt(0);
            //字符串RESP = item.coerceToText(上下文)的ToString();
            //停止显示它在哪里它被拖前视图
            view.setVisibility(View.INVISIBLE);            //视图拖项目上被丢弃
            ImageView的DropTarget的=(ImageView的)V;            //观点被拖放
            ImageView的下降=(ImageView的)视图。        // dropped.setEnabled(假);            //更新目标视图中的文本,以反映该数据被丢弃
            dropTarget.setBackgroundDrawable(view.getBackground());
            dropTarget.setTag(dropped.getId());
        打破;

我是如何拍X和Y等形象?

in my program i 4 imageview, imageview1 and imageview2 should drag and drop to imageview3 and imageview4

imageview1 should drop only in imageview3 and if droped another place should back to original place and imageview2 should drop only in imageview4 and if droped another place should back to original place

i write code and i dont know how defined the target of imageview1 and imageview2 and say if drope place exept this target back to original place

package com.test.dragplease;

import android.app.Activity;
import android.content.ClipData;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.OnDragListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

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

    findViewById(R.id.imageView1).setOnTouchListener(new MyTouchListener());
    findViewById(R.id.imageView2).setOnTouchListener(new MyTouchListener());

    findViewById(R.id.imageView3).setOnDragListener(new MyDragListener());
    findViewById(R.id.imageView4).setOnDragListener(new MyDragListener());


}



private final class MyTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent motionEvent) {
      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
        ClipData data = ClipData.newPlainText("", "");
        DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view, 0);
        view.setVisibility(View.INVISIBLE);
        return true;
      } else {
        return false;
      }
    }
  }




class MyDragListener implements OnDragListener {


    @Override
    public boolean onDrag(View v, DragEvent event) {
      //int action = event.getAction();
      switch (event.getAction()) {
      case DragEvent.ACTION_DRAG_STARTED:
        // do nothing
        break;
      case DragEvent.ACTION_DRAG_ENTERED:
          // do nothing
        break;
      case DragEvent.ACTION_DRAG_EXITED:
        break;
      case DragEvent.ACTION_DROP:
        // Dropped, reassign View to ViewGroup
            View view = (View) event.getLocalState();
            //ClipData cd =  event.getClipData();
            //Item item = cd.getItemAt(0);
            //String resp = item.coerceToText(context).toString();


            //stop displaying the view where it was before it was dragged
            view.setVisibility(View.INVISIBLE);

            //view dragged item is being dropped on
            ImageView dropTarget = (ImageView) v;

            //view being dragged and dropped
            ImageView dropped = (ImageView) view;

        //  dropped.setEnabled(false);

            //update the text in the target view to reflect the data being      dropped
            dropTarget.setBackgroundDrawable(view.getBackground());


            dropTarget.setTag(dropped.getId());


        break;
      case DragEvent.ACTION_DRAG_ENDED:

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

解决方案

in onTouchListener i should X and Y that image i drag like this

 private final class MyTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent event) {

        final int mX = (int) event.getX();
       final int mY = (int) event.getY();
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
        ClipData data = ClipData.newPlainText("", "");
        DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view, 0);
        view.setVisibility(View.INVISIBLE);
        return true;
      } else {
        return false;
      }
    }
  }

and in action_drop i take X and Y that image i release that like this

 case DragEvent.ACTION_DROP:
         v.getX();
         v.getY();

        // Dropped, reassign View to ViewGroup
            View view = (View) event.getLocalState();
            //ClipData cd =  event.getClipData();
            //Item item = cd.getItemAt(0);
            //String resp = item.coerceToText(context).toString();


            //stop displaying the view where it was before it was dragged
            view.setVisibility(View.INVISIBLE);

            //view dragged item is being dropped on
            ImageView dropTarget = (ImageView) v;

            //view being dragged and dropped
            ImageView dropped = (ImageView) view;

        //  dropped.setEnabled(false);

            //update the text in the target view to reflect the data being dropped
            dropTarget.setBackgroundDrawable(view.getBackground());


            dropTarget.setTag(dropped.getId());


        break;

how i take X and Y other image?

这篇关于如何定义的目标拖放图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆