2017-04-24 3 views
-1

Je souhaite déplacer plusieurs FloatingActionButtons. Je crée donc 1 FloatingActionButton principal et 5 FloatingActionButton. puis, si je déplace Main FloatingActionButton, Sub FloatingActionButton déplace Main FloatingActionButton déplacez la ligne comme Thumbler FloatingActionButton. Aidez-moiComment animer plusieurs FloatingActionButtons

Test2Activity.java

 public class Test2Activity extends AppCompatActivity{ 

    private FloatingActionButton floatA, floatB, floatC, floatD, floatE, floatM; 
    private float dX,dY; 
    private HashMap<Integer, Position> list; 
    private int i; 

    private int hasOpen = 0; // 0 : Close(Basic), 1 : Open 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test2); 
     floatA = (FloatingActionButton) findViewById(R.id.test2_floatingA); 
     floatB = (FloatingActionButton) findViewById(R.id.test2_floatingB); 
     floatC = (FloatingActionButton) findViewById(R.id.test2_floatingC); 
     floatD = (FloatingActionButton) findViewById(R.id.test2_floatingD); 
     floatE = (FloatingActionButton) findViewById(R.id.test2_floatingE); 
     floatM = (FloatingActionButton) findViewById(R.id.test2_floatingM); 

     floatM.setOnTouchListener(new View.OnTouchListener() { 
      @RequiresApi(api = Build.VERSION_CODES.KITKAT) 
      @Override 
      public boolean onTouch(View view, final MotionEvent event) { 

       list = new HashMap<Integer, Position>(); 
       i = 0; 

       switch (event.getAction()){ 
        case MotionEvent.ACTION_DOWN: 
         dX = view.getX() - event.getRawX(); 
         dY = view.getY() - event.getRawY(); 
         break; 
        case MotionEvent.ACTION_MOVE: 
         view.animate() 
           .x(event.getRawX() + dX) 
           .y(event.getRawY() + dY) 
           .setDuration(0) 
           .start(); 
         Log.v("@@ i ", "" + i); 

         if(i > 1){ 
          floatA.animate() 
            .x(list.get(i-1).getdX()) 
            .y(list.get(i-1).getdY()) 
            .setDuration(0) 
            .start(); 
         } 

         if(i > 2) { 
          floatB.animate() 
            .x(list.get(i-2).getdX()) 
            .y(list.get(i-2).getdX()) 
            .setDuration(0) 
            .start(); 
         } 

         if(i > 3) { 
          floatC.animate() 
            .x(list.get(i-3).getdX()) 
            .y(list.get(i-3).getdX()) 
            .setDuration(0) 
            .start(); 
         } 

         if(i > 4) { 
          floatD.animate() 
            .x(list.get(i-4).getdX()) 
            .y(list.get(i-4).getdX()) 
            .setDuration(0) 
            .start(); 
         } 


         if(i > 5) { 
          floatE.animate() 
            .x(list.get(i-5).getdX()) 
            .y(list.get(i-5).getdX()) 
            .setDuration(0) 
            .start(); 
         } 
       } 
       return true; 
      } 
     }); 
    } 
    @Override 
    public void onBackPressed() { 

    } 
} 

activity_test2.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:id="@+id/activity_test2" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="0dp" 
    android:padding="0dp" 
    tools:context="kr.nubiz.testapplication.Test2Activity"> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     app:srcCompat="?android:attr/listChoiceIndicatorSingle" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_margin="0dp" 
     android:padding="0dp" 
     android:id="@+id/test2_floatingA" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     android:layout_margin="0dp" 
     android:padding="0dp" 
     app:srcCompat="@android:drawable/btn_dialog" 
     android:layout_alignTop="@+id/test2_floatingA" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/test2_floatingB" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     android:layout_margin="0dp" 
     android:padding="0dp" 
     app:srcCompat="@android:drawable/btn_star" 
     android:layout_alignTop="@+id/test2_floatingA" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/test2_floatingC" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     app:srcCompat="@android:drawable/btn_star_big_on" 
     android:layout_alignTop="@+id/test2_floatingA" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/test2_floatingD" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     app:srcCompat="@android:drawable/ic_lock_power_off" 
     android:layout_alignTop="@+id/test2_floatingA" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/test2_floatingE" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     app:fabSize="mini" 
     app:srcCompat="@android:drawable/ic_input_add" 
     android:id="@+id/test2_floatingM" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" /> 

</RelativeLayout> 
+0

Pourquoi voudriez-vous faire beaucoup de boutons flottants ?? Tout ce que vous voulez, c'est des sous-menus? –

+0

@AbdulKawee Merci pour le commentaire, Si je clique Main FloatingActionButton, sous FloatingActionButton show. Sub FloatingActionButton est un sous-menu. – Jin

+0

Vérifiez la réponse ci-dessous, j'espère que cela fonctionne pour vous :) –

Répondre

0

Utilisez cette bibliothèque pour ajouter le bouton d'action flottant avec des sous-menus.

Maintenant, utilisez simplement setOnTouchListener sur un seul bouton principal flottant, vous n'avez pas à vous soucier de tous les sous-menus.

Hope this helps :)

+0

Merci pour la réponse – Jin

+0

votre accueil :) –

0

Vous pouvez utiliser FloatingActionMenu pour cela.

C'est là que votre chasse se terminera.

+0

Merci pour la réponse. mais je ne peux pas déplacer cette page 404 – Jin

+0

Désolé pour le dérangement. Veuillez retirer ']' de la fin de l'URL. – Shreyansh

+0

https://github.com/Clans/FloatingActionButton – Shreyansh