使用拖动来交换图像

时间:2013-04-26 14:34:18

标签: android drag-and-drop

在我的应用程序中,我想使用拖动来更改图像。以下是我的活动的屏幕截图。在这个屏幕上有4个图像。我想要改变整个图像。例如,当我触摸第一个图像(脸谱)并将图像拖到任何图像示例第二个图像(推特)然后相互交换图像,如第一个图像集到第二个位置和第二个图像设置到第一个位置。并且如上所述相互更改4个图像。并且首先是facebook和twitter图像,也是第二个位置,也是第三个地方和aso第四名。我在四处设置了8个图像。我完成了这个任务。我的问题是如何拖动图像并将图像设置为任意三个位置。“当我触摸第一个图像(facebook)并拖动时接近任何图像示例第二图像(推特)的图像然后将图像相互交换,如第一图像集到第二位,第二图像设置为第一位“。

enter image description here

我为完成这项任务做了很多尝试。这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main1);

         ivFacebook1=(ImageView)findViewById(R.id.facebook1);
         ivFacebook2=(ImageView)findViewById(R.id.facebook2);
         ivFacebook3=(ImageView)findViewById(R.id.facebook3);
         ivFacebook4=(ImageView)findViewById(R.id.facebook4);

         ivTwitter1=(ImageView)findViewById(R.id.twitter1);
         ivTwitter2=(ImageView)findViewById(R.id.twitter2);
         ivTwitter3=(ImageView)findViewById(R.id.twitter3);
         ivTwitter4=(ImageView)findViewById(R.id.twitter4);

ivFacebook1.setOnTouchListener(this);
     ivFacebook2.setOnTouchListener(this);
     ivFacebook3.setOnTouchListener(this);
     ivFacebook4.setOnTouchListener(this);

     ivTwitter1.setOnTouchListener(this);
     ivTwitter2.setOnTouchListener(this);
     ivTwitter3.setOnTouchListener(this);
     ivTwitter4.setOnTouchListener(this);
 }

这是我的ontouch:

@Override
    public boolean onTouch(View v, MotionEvent event){

        ImageView view = (ImageView) v;

        Log.e("id",""+v.getId());

        Log.e("ontouch","workkkkkkk");
        float scale;
        boolean moving = false;//stupid state
        switch (event.getAction() & MotionEvent.ACTION_MASK){


        case MotionEvent.ACTION_DOWN:

            final int x = (int)event.getX();
            final int y = (int)event.getY();

            Log.e("x,y",""+x+","+y);



            if((layout1.getLeft()<x)&&(x<layout1.getRight())&&((layout1.getTop()<y)&&(y<layout1.getBottom()))) {


                viewnumber=1;
                Log.e("View1","in View1");

             }

            if((layout2.getLeft()<x)&&(x<layout2.getRight())&&((layout2.getTop()<y)&&(y<layout2.getBottom()))){

                viewnumber=2;
                Log.e("View2","in View2");

                 }
            if((layout3.getLeft()<x)&&(x<layout3.getRight())&&((layout3.getTop()<y)&&(y<layout3.getBottom()))){

                viewnumber=3;
                Log.e("View3","in View3");   
                 }

            if((layout4.getLeft()<x)&&(x<layout4.getRight())&&((layout4.getTop()<y)&&(y<layout4.getBottom()))) {

                viewnumber=4;
                Log.e("View4","in View4");   

                 }

            ClipData data = ClipData.newPlainText("", "");
            DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
            view.startDrag(data, shadowBuilder, view, 0);

            view.setVisibility(View.INVISIBLE);
            return true; 

        case MotionEvent.ACTION_MOVE:

            Log.e("action move","moveeeeeeeeee");
        case MotionEvent.ACTION_UP:
            moving = false;
            return true;

        }   
        return true;
    }//ontouch.

通过使用此代码,四个图像正在拖动。当我按下手指并拖动图像工作正常。但是在拖动之间,当我抬起手指时,图像就会消失。并且图像也没有设置。

0 个答案:

没有答案