2015-02-25 8 views

cevap

14

Bir github project.You buna ben gönderme devlet veya kayıt halde de olabilir whatsapp uygulamasında olduğu gibi gönder düğmesine uygulamış https://github.com/sarathnk/Audio

audioSendButton.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText 
          .getLayoutParams(); 
        params.leftMargin = dp(30); 
        slideText.setLayoutParams(params); 
        ViewProxy.setAlpha(slideText, 1); 
        startedDraggingX = -1; 
        // startRecording(); 
        startrecord(); 
        audioSendButton.getParent() 
          .requestDisallowInterceptTouchEvent(true); 
        recordPanel.setVisibility(View.VISIBLE); 
       } else if (motionEvent.getAction() == MotionEvent.ACTION_UP 
         || motionEvent.getAction() == MotionEvent.ACTION_CANCEL) { 
        startedDraggingX = -1; 
        stoprecord(); 
        // stopRecording(true); 
       } else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) { 
        float x = motionEvent.getX(); 
        if (x < -distCanMove) { 
         stoprecord(); 
         // stopRecording(false); 
        } 
        x = x + ViewProxy.getX(audioSendButton); 
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideText 
          .getLayoutParams(); 
        if (startedDraggingX != -1) { 
         float dist = (x - startedDraggingX); 
         params.leftMargin = dp(30) + (int) dist; 
         slideText.setLayoutParams(params); 
         float alpha = 1.0f + dist/distCanMove; 
         if (alpha > 1) { 
          alpha = 1; 
         } else if (alpha < 0) { 
          alpha = 0; 
         } 
         ViewProxy.setAlpha(slideText, alpha); 
        } 
        if (x <= ViewProxy.getX(slideText) + slideText.getWidth() 
          + dp(30)) { 
         if (startedDraggingX == -1) { 
          startedDraggingX = x; 
          distCanMove = (recordPanel.getMeasuredWidth() 
            - slideText.getMeasuredWidth() - dp(48))/2.0f; 
          if (distCanMove <= 0) { 
           distCanMove = dp(80); 
          } else if (distCanMove > dp(80)) { 
           distCanMove = dp(80); 
          } 
         } 
        } 
        if (params.leftMargin > dp(30)) { 
         params.leftMargin = dp(30); 
         slideText.setLayoutParams(params); 
         ViewProxy.setAlpha(slideText, 1); 
         startedDraggingX = -1; 
        } 
       } 
       view.onTouchEvent(motionEvent); 
       return true; 
      } 
     }); 
+0

Grea t Burada kayıtlı ses dosyalarını saklamak istiyorum –

3

bakmak olabilir oluşturduk. Buraya blog post numaralı telefonumdan ulaşabilirsiniz.

Kullanım çok basit.

<com.gunhansancar.android.animbutton.AnimButton 
     android:id="@+id/animButton" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     app:first="@drawable/ic_mic" 
     app:second="@drawable/ic_send" /> 

Sadece birinci ve ikinci çizilebilir ayarlamanız gerekir. Ayrıca, goToState() yöntemini kullanarak durumu ayarlamanız gerekir.

2

i RecordView

o kurulumu kolay ve WhatsApp gibi aynı davranışı taklit ediyor yaptık kitaplığını kullanabilirsiniz.

Basitçe Görüntüleme RecordView ve Etkinlik

RecordView recordView = (RecordView) findViewById(R.id.record_view); 
    RecordButton recordButton = (RecordButton) 
    findViewById(R.id.record_button); 

    //IMPORTANT 
    recordButton.setRecordView(recordView); 

son olarak işleyebilir sonra

<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/parent_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.devlomi.recordview.MainActivity"> 

<com.devlomi.record_view.RecordView 
    android:id="@+id/record_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_toLeftOf="@id/record_button" 
    app:slide_to_cancel_arrow="@drawable/ic_keyboard_arrow_left" 
    app:slide_to_cancel_text="Slide To Cancel" 
    app:slide_to_cancel_margin_right="10dp"/> 

<com.devlomi.record_view.RecordButton 
    android:id="@+id/record_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/bg_mic" 
    android:scaleType="centerInside" 
    app:src="@drawable/ic_mic_white" 
    /> 

RecordButton Tutanak Devletleri

  • eklemek onStart zaman
  • onFinish bitirir rekor iptal etmek kaydırarak ve millis kaydedilen zaman döndüğünde
  • onCancel Kayıt başlangıç ​​
  • onLessThanSecond zaman kayıt süresi < = 1 saniyede

    recordView.setOnRecordListener(this); 
    
    
        @Override 
        public void onStart() { 
         //Start Recording.. 
         Log.d("RecordView", "onStart"); 
        } 
    
        @Override 
        public void onCancel() { 
         //On Swipe To Cancel 
         Log.d("RecordView", "onCancel"); 
    
        } 
    
        @Override 
        public void onFinish(long recordTime) { 
         //Stop Recording.. 
         String time = getHumanTimeText(recordTime); 
         Log.d("RecordView", "onFinish"); 
    
         Log.d("RecordTime", time); 
        } 
    
        @Override 
        public void onLessThanSecond() { 
         //When the record time is less than One Second 
         Log.d("RecordView", "onLessThanSecond"); 
        }