2017-02-01 105 views
1

我在Android Studio中爲自閉症兒童創建了一個時間表/日程安排應用程序,他們可以使用'活動圖像'將活動圖像'放入並拖動'到總共5個活動位置'每天(星期一,星期二等)。拖放到多個位置

我已命名每個IMAGELOCATION如下:

MONDAY:1A,1B,1C,1D,1E 星期二:2A,2B,2C,2D,2E 星期三:3A,3B,3C,4D, 3E THURDAY:4A,4B,4C,4D,4E FRIDAY:5A,5B,5C,5D,5E SATURDAY:圖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; 
    } 
}; 

}

+0

提示:我會爲圖像和activityslotlocation創建兩個數組列表,然後循環處理初始化和賦值偵聽器。爲了縮短你的代碼, – Alex

回答

0

我改變你的代碼一點,試試這個,但聽意見,並嘗試修剪代碼下來了一點。

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; 
} 

};

+0

嗨,Alex。對不起,我也應該提到,我是一個初學者....當我把你的代碼放入我的'startview = v;'時出錯。在ACTION DRAG中輸入,並且在操作DROP –

+0

中的'if(!startview)'也出錯,錯誤信息是什麼意思? – Alex

+0

你也許有更直接的形式聯繫?也許電子郵件我可以給你發送截圖嗎? –