-1

私はメインのXMLに3つのボタンがあり、そこにはテーブルを追加し、chair、reset.whenをクリックしてテーブルを追加すると、chairを追加するために同じレイアウトのテーブルが追加されます。ドラッグアンドドロップのようなレイアウトです。 3 buttons.on各ボタンのクリックが含まれていイメージアンドロイドにドラッグアンドドロップ機能を追加するにはどうすればよいですか?

主な活動、それは意図

を通じてsecond.javaに渡すMainActivity.Java

public class MainActivity extends AppCompatActivity { 


    private ArrayList<String> mSelecetdItems = new ArrayList<>(); 

    public static final String SELECETD_ITEMS = "SELECETD_ITEMS"; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 


    public void addtable(View v){ 
     this.mSelecetdItems.add("table"); 
     showSecondActivity(); 
    } 
    public void addchair(View v){ 
     this.mSelecetdItems.add("chair"); 
     showSecondActivity(); 
    } 


    private void showSecondActivity() 
    { 
     Intent i = new Intent(this,Second.class); 
     i.putStringArrayListExtra(SELECETD_ITEMS,this.mSelecetdItems); 
     startActivity(i); 
    } 


    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 
     savedInstanceState.putStringArrayList(SELECETD_ITEMS , mSelecetdItems); 
    } 

    @Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     this.mSelecetdItems = savedInstanceState.getStringArrayList(SELECETD_ITEMS); 
    } 


activity_main.xml 


<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.andiroot.restaurantbook.MainActivity"> 




    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:minHeight="?attr/actionBarSize" 
     android:background="#ff1e8622" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     > 
    </android.support.v7.widget.Toolbar> 

    <RelativeLayout 
     android:layout_width="368dp" 
     android:layout_height="495dp" 
     tools:layout_editor_absoluteX="8dp" 
     tools:layout_editor_absoluteY="64dp"> 

     <Button 
      android:id="@+id/btn_addtbl" 
      style="@style/Widget.AppCompat.Button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="76dp" 
      android:text="Add Table" 
      android:onClick="addtable"/> 

     <Button 
      android:id="@+id/btn_addchairs" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="addchair" 
      android:layout_marginTop="27dp" 
      android:text="Add Chair" 
      android:layout_below="@+id/btn_addtbl" 
      android:layout_alignEnd="@+id/btn_addtbl" /> 

     <Button 
      android:id="@+id/btn_reset" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignEnd="@+id/btn_addchairs" 
      android:layout_below="@+id/btn_addchairs" 
      android:layout_marginTop="51dp" 
      android:text="Reset" /> 
    </RelativeLayout> 



</android.support.constraint.ConstraintLayout> 


Second.java 



public class Second extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.second_toolbar); 
     setSupportActionBar(toolbar); 
     ActionBar ab = getSupportActionBar(); 
     ab.setDisplayHomeAsUpEnabled(true); 

     /*toolbar.setNavigationIcon((R.drawable.back_arrow)); 

     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     });*/ 


     LinearLayoutCompat hall = (LinearLayoutCompat) findViewById(R.id.hall_layout); 
     Intent i = getIntent(); 


     ArrayList<String> selecetdItems = i.getStringArrayListExtra(MainActivity.SELECETD_ITEMS); 
     for (String selecetdItem : selecetdItems) { 
      if (selecetdItem.equals("table")) { 
       addImageView(R.drawable.table, hall); 
      } else if (selecetdItem.equals("chair")) { 
       addImageView2(R.drawable.chair2, hall); 
      } 
     } 


    } 

    private void addImageView(int imageRes, LinearLayoutCompat hall) { 
     ImageView iv = new ImageView(this); 
     iv.setImageResource(imageRes); 
     iv.setLayoutParams(new android.view.ViewGroup.LayoutParams(250, 250)); 
     iv.setMaxHeight(180); 
     iv.setMaxWidth(120); 
     iv.setPadding(15,15,0,0); 
     hall.addView(iv); 
    } 

    private void addImageView2(int imageRes, LinearLayoutCompat hall) { 
     ImageView iv2 = new ImageView(this); 
     iv2.setImageResource(imageRes); 
     iv2.setLayoutParams(new android.view.ViewGroup.LayoutParams(150, 150)); 
     iv2.setMaxHeight(30); 
     iv2.setMaxWidth(30); 

     iv2.setPadding(25,0,0,0); 
     hall.addView(iv2); 
    } 

activity_second.java 


<?xml version="1.0" encoding="utf-8"?> 

<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/hall_layout" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.andiroot.restaurantbook.Second"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/second_toolbar" 
     android:minHeight="?attr/actionBarSize" 
     android:background="#ff1e8622" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 



    </android.support.v7.widget.Toolbar> 
<!-- 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/hall_layout2"> 
    </RelativeLayout> 
--> 
</android.support.v7.widget.LinearLayoutCompat> 

答えて

0

あなたはそれらの画像にonTouchListener実装する必要があります。

@Override 
public boolean onTouch(View v, MotionEvent motionEvent) { 
int width=cropperLayout.getLayoutParams().width;; 
    int height=cropperLayout.getLayoutParams().height; 
    switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 

      dX = v.getX() - event.getRawX(); 
      dY = v.getY() - event.getRawY(); 

      return true; 

     case MotionEvent.ACTION_MOVE: 

      if (width == windowWidth && height == windowHeight){} 
      else { 
       v.animate() 
         .x(event.getRawX() + dX) 
         .y(event.getRawY() + dY) 
         .setDuration(0) 
         .start(); 

       if (event.getRawX() + dX + width > windowWidth) { 
        v.animate() 
          .x(windowWidth - width) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawX() + dX < 0) { 
        v.animate() 
          .x(0) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY + height > windowHeight) { 
        v.animate() 
          .y(windowHeight - height) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY < 0) { 
        v.animate() 
          .y(0) 
          .setDuration(0) 
          .start(); 
       } 

       return true; 
      }  
    } 
    } 
+0

私にいくつかの例がありますか? –

+0

のように、ボタン上でonClickListenersを同じようにインライン化すると、画像上でそれを行うだけです。このようなimage.setOnTouchListener(New OnTouchListener)のように – Anmol

+0

が動作しない switch in eventは何ですか? –

関連する問題