I have a dialog menu setup for the user to pick a building which they wish to build. When they press the buy button, the building is automatically inserted into the activity. The issue is that when more than one is bought, then moving the most recently bought building will also move the second most recently bought building. I am not positive how to fix this issue. I would see if setting the new buildings in a frame layout rather than a linear layout would help, but my drag and drop does not work if I do it that way.
Here is the code for the imagebutton being set up after the buy button is pressed:
layout = (LinearLayout) findViewById(R.id.newColonyHutLayout);
buyColonyHut = (Button) buildingSelect.findViewById(R.id.buyColonyHut);
buyColonyHut.setText("Buy");
buyColonyHut.setBackgroundColor(-65536);
buyColonyHut.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//get current amount of rock and check if it is enough to buy
data = new Database(runGraphics.this);
data.open();
rockAmount = data.getRockAmount();
data.close();
if (rockAmount >= 100)
{
//take away spent money and update database
data.open();
rockAmount -= 100;
data.rockAmountEntry(rockAmount);
data.close();
//update the scores
updateScores();
//close the dialog
buildingSelect.dismiss();
buildMoreButton.setBackgroundColor(-65536);
//they have enough rock, build the building
newColonyHut = new ImageButton(runGraphics.this);
newColonyHut.setBackgroundResource(R.drawable.mainhut);
newColonyHut.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout.addView(newColonyHut);
newColonyHut.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
newColonyHutSelected = true;
}//end if
if (event.getAction() == MotionEvent.ACTION_UP)
{
if (newColonyHutSelected == true)
{
newColonyHutSelected = false;
}//end if
}//end if
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
if (newColonyHutSelected == true)
{
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(v.getWidth(), v.getHeight());
params.setMargins((int)(event.getRawX() - event.getRawY() / 5), (int) (event.getRawY() - v.getHeight()), (int) (event.getRawX() - v.getWidth() / 5), (int) (event.getRawY() - v.getHeight()));
v.setLayoutParams(params);
}//end if
}//end else
return false;
}//end onTouch function
});//end setOnTouchListener
}//end onClick function
});//end onClickListener
here is the xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/newColonyHutLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ImageButton
android:id="@+id/newColonyHut"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mainhut" />
</LinearLayout>
</FrameLayout>