0

在我的应用程序中,我想使用拖动来更改图像。以下是我的活动的屏幕截图。在这个屏幕上有 4 张图像。我想交换总图像。例如,当我触摸第一张图像(facebook)并将图像拖到任何图像示例第二张图像附近时(推特)然后交换图像,如第一个图像设置为第二位,第二个图像设置为第一个位置。并且还交换上面的 4 个图像。在第一位置,无论是 facebook 和 twitter 图像,还是第二位和第三位位和第四位。我在foue的任何地方设置了8张图像。我完成了这个任务。唯一的问题是如何拖动图像并将图像设置到任意三个位置。

在此处输入图像描述

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

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.

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

4

0 回答 0