拖放并拖动到多个位置



我正在为自闭症儿童在Android Studio中创建一个时间表/时间表应用程序,他们可以使用"活动图像"组织他们的一天,可以"拖放"到每天总共5个"活动时段"(星期一,星期二等)。

我按如下方式命名每个图像位置:

星期一: 1A, 1B, 1C, 1D, 1E星期二: 2A, 2B, 2C, 2D, 2E星期三: 3A, 3B, 3C, 4D, 3E星期四: 4A, 4B, 4C, 4D, 4E星期五: 5A, 5B, 5C, 5D, 5E星期六: 6A, 6B, 6C, 6D, 6E星期日: 7A, 7B, 7C, 7D, 7E

我已经成功地对其进行编码以将"活动图像"放置在位置 1A 中,但是我不确定如何为其余位置对其进行编码。 我尝试复制并粘贴之前用于其他位置的代码,但是当"拖放"图像时,它会将同一图像复制到所有编码的位置。

public class NewScheduleActivity extends AppCompatActivity {
ImageView image1, image2, image3, image4, image5, image6, image7, image8, image9, image10;
ImageView activityslotlocation1a, activityslotlocation1b, activityslotlocation1c, activityslotlocation1d, activityslotlocation1e;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newschedulescreen);

    image1 = (ImageView) findViewById(R.id.imageView1);
    image2 = (ImageView) findViewById(R.id.imageView2);
    image3 = (ImageView) findViewById(R.id.imageView3);
    image4 = (ImageView) findViewById(R.id.imageView4);
    image5 = (ImageView) findViewById(R.id.imageView5);
    image6 = (ImageView) findViewById(R.id.imageView6);
    image7 = (ImageView) findViewById(R.id.imageView7);
    image8 = (ImageView) findViewById(R.id.imageView8);
    image9 = (ImageView) findViewById(R.id.imageView9);
    image10 = (ImageView) findViewById(R.id.imageView10);
     activityslotlocation1a = (ImageView) findViewById(R.id.activityslot1a);
    activityslotlocation1b = (ImageView) findViewById(R.id.activityslot1b);
    activityslotlocation1c = (ImageView) findViewById(R.id.activityslot1c);
    activityslotlocation1d = (ImageView) findViewById(R.id.activityslot1d);
    activityslotlocation1e = (ImageView) findViewById(R.id.activityslot1e);
    image1.setOnLongClickListener(longClickListener);
    image2.setOnLongClickListener(longClickListener);
    image3.setOnLongClickListener(longClickListener);
    image4.setOnLongClickListener(longClickListener);
    image5.setOnLongClickListener(longClickListener);
    image6.setOnLongClickListener(longClickListener);
    image7.setOnLongClickListener(longClickListener);
    image8.setOnLongClickListener(longClickListener);
    image9.setOnLongClickListener(longClickListener);
    image10.setOnLongClickListener(longClickListener);
    activityslotlocation1a.setOnDragListener(dragListener);
    activityslotlocation1b.setOnDragListener(dragListener);
    activityslotlocation1c.setOnDragListener(dragListener);
    activityslotlocation1d.setOnDragListener(dragListener);
    activityslotlocation1e.setOnDragListener(dragListener);
}
View.OnLongClickListener longClickListener = new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        ClipData data = ClipData.newPlainText("", "");
        View.DragShadowBuilder myShadowBuilder = new View.DragShadowBuilder(v);
        v.startDragAndDrop(data, myShadowBuilder, v, 0);
        return true;
    }
};
View.OnDragListener dragListener = new View.OnDragListener() {
    @Override
    public boolean onDrag(View v, DragEvent event) {
        int dragEvent = event.getAction();
        final View view = (View) event.getLocalState();
        switch (dragEvent) {
            case DragEvent.ACTION_DRAG_ENTERED:
                break;
            case DragEvent.ACTION_DRAG_EXITED:
                break;

            case DragEvent.ACTION_DROP:
                // Location 1A
                if (view.getId() == R.id.imageView1) {
                    activityslotlocation1a.setImageResource(R.drawable.art);
                } else if (view.getId() == R.id.imageView2) {
                    activityslotlocation1a.setImageResource(R.drawable.gohome);
                } else if (view.getId() == R.id.imageView3) {
                    activityslotlocation1a.setImageResource(R.drawable.bedtime);
                } else if (view.getId() == R.id.imageView4) {
                    activityslotlocation1a.setImageResource(R.drawable.watchamovie);
                } else if (view.getId() == R.id.imageView5) {
                    activityslotlocation1a.setImageResource(R.drawable.swimmingclass);
                } else if (view.getId() == R.id.imageView6) {
                    activityslotlocation1a.setImageResource(R.drawable.cooking);
                } else if (view.getId() == R.id.imageView7) {
                    activityslotlocation1a.setImageResource(R.drawable.blocks);
                } else if (view.getId() == R.id.imageView8) {
                    activityslotlocation1a.setImageResource(R.drawable.drink);
                } else if (view.getId() == R.id.imageView9) {
                    activityslotlocation1a.setImageResource(R.drawable.bedtimestory);
                } else if (view.getId() == R.id.imageView10) {
                    activityslotlocation1a.setImageResource(R.drawable.pizzanight);
                }
                //view.animate()
                        //.x(activityslotlocation1a.getX())
                        //.y(activityslotlocation1a.getY())
                        //.setDuration(500)
                        //.start();
                MediaPlayer mymedia = MediaPlayer.create(NewScheduleActivity.this,R.raw.whoosh);
                mymedia.start();
                break;
        }

        return true;
    }
};

}

我稍微更改了您的代码,请尝试一下,但请听听注释并尝试将代码减少一点。

private Imageview startview;
View.OnDragListener dragListener = new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
    int dragEvent = event.getAction();
    final View view = (View) event.getLocalState();
    switch (dragEvent) {
        case DragEvent.ACTION_DRAG_ENTERED:
            startview = v;
            break;
        case DragEvent.ACTION_DRAG_EXITED:
            break;
        case DragEvent.ACTION_DROP:
            if(!startview) break;
            if (view.getId() == R.id.imageView1) {
                startview.setImageResource(R.drawable.art);
            } else if (view.getId() == R.id.imageView2) {
              startview.setImageResource(R.drawable.gohome);
            } else if (view.getId() == R.id.imageView3) {
             startview.setImageResource(R.drawable.bedtime);
            } else if (view.getId() == R.id.imageView4) {
              startview.setImageResource(R.drawable.watchamovie);
            } else if (view.getId() == R.id.imageView5) {
              startview.setImageResource(R.drawable.swimmingclass);
            } else if (view.getId() == R.id.imageView6) {
              startview.setImageResource(R.drawable.cooking);
            } else if (view.getId() == R.id.imageView7) {
              startview.setImageResource(R.drawable.blocks);
            } else if (view.getId() == R.id.imageView8) {
               startview.setImageResource(R.drawable.drink);
            } else if (view.getId() == R.id.imageView9) {
              startview.setImageResource(R.drawable.bedtimestory);
            } else if (view.getId() == R.id.imageView10) {
              startview.setImageResource(R.drawable.pizzanight);
            }
           startview = null;
            MediaPlayer mymedia = MediaPlayer.create(NewScheduleActivity.this,R.raw.whoosh);
            mymedia.start();
            break;
    }

    return true;
}

};

最新更新