4

Je veux une diapositive pour annuler l'animation comme WhatsApp dans mon application.Diapositive pour annuler l'animation dans Android

Premièrement, lorsque je maintiens le bouton d'enregistrement, l'enregistrement commence. Cette partie fonctionne bien. Deuxièmement, lorsque je déplace le doigt dans le sens inverse de la direction de la poubelle alors que je l'ai déjà engagé, «Slide texte pour annuler» devrait glisser vers l'arrière et l'enregistrement devrait être mis en pause. Après un certain point je vais effectuer la poubelle peut ouvrir l'animation. Mais si Tandis que je glisse vers l'avant si je glisse vers l'avant, la vue du texte doit être réglée à sa position d'origine et l'enregistrement doit être à nouveau lu.

Mon problème: Je ne reçois aucune aide pour faire glisser le texte avec précision.

J'ai également pris l'aide d'ici https://github.com/sarathnk/Audio mais je n'étais pas en mesure d'atteindre le résultat souhaité.

Ceci est mon code Java:

holdtoRecord = (ImageView) findViewById(R.id.hold); 
slider = (TextView) findViewById(R.id.slide); 

holdtoRecord.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        // start recording. 
        mVideoView.pause(); 
        onHold(); 

        return true; 

       } 

       if (event.getAction() == MotionEvent.ACTION_UP) { 
        // Stop recording and save file 


        mVideoView.start(); 
        offHold(); 

        return true; 
       } 


       if (event.getAction() == MotionEvent.ACTION_MOVE) { 


       } 

enter image description here

+0

je ne veux pas dupliquer des réponses, vous pouvez vérifier Ma bibliothèque dans cette réponse [link] https://stackoverflow.com/a/47876905/4130286 – 3llomi

Répondre

3

Essayez avec ce code, il fonctionnera.

int xPos_terminal = 100; 
    int xPos_DragInitial = 0; 


hold.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 


       if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
        // start recording. 

        xPos_DragInitial = (int) motionEvent.getX(); 
        xPos_SliderOriginal = (int) slider.getX(); 

        int xPos_Trash = (int) trash_cap.getX(); 

        Log.e("original", String.valueOf(xPos_Trash)); 
        return true; 

       } 

       if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 
        return true; 

       } 



       if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) { 


        int xPos_current = (int) motionEvent.getX(); 


        //Handling of SlideToCancel View 
        String slideToViewMsg = ""; 
        if(xPos_current < xPos_DragInitial) 
        { 
         //LEFT DIRECTION 
         Log.e("----- LEFT DIRECTION --","S"); 
         if(xPos_SliderOriginal > (xPos_terminal)) 
         { 
          slideToViewMsg = "Animate SlideToCancel view to Reduce its X"; 
          lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
          int newXOfSlider = (int) slider.getX(); 
          newXOfSlider -= 2; 
          lp.setMargins(newXOfSlider, (int) slider.getY(), 0, 0); 
          slider.setLayoutParams(lp); 
         } 
         else 
         { 
          slideToViewMsg = "Donot Animate SlideToCancel view"; 
         } 
        } 
        else 
        { 
         //RIGHT DIRECTION 
         Log.e("---- RIGHT DIRECTION --","r"); 
         if((int)slider.getX() < xPos_SliderOriginal) 
         { 
          slideToViewMsg = "Animate SlideToCancel view to increase X"; 
          int newXOfSlider = (int) slider.getX(); 
          newXOfSlider += 2; 
          lp.setMargins(newXOfSlider, (int) slider.getY(), 0, 0); 
          slider.setLayoutParams(lp); 
         } 
         else 
         { 
          slideToViewMsg = "Donot Animate SlideToCancel View"; 
         } 
        } 

        Log.e("x",slideToViewMsg); 
        //Handling of Delet button 
        if (xPos_current < (xPos_terminal)) 
        { 
         //Animate Delete button to open 


        } 
        else 
        { 
         //Animate Delet Button To Close 

        } 

        //chnage xPosInitial to xPosCurrent to get actual direction 
        xPos_DragInitial = xPos_current; 
        return true; 

       } 

       return false; 
      } 
     }); 
    } 
+0

ok je vais essayer that..thanks –