Coder Social home page Coder Social logo

3llomi / recordview Goto Github PK

View Code? Open in Web Editor NEW
361.0 11.0 105.0 13.43 MB

A Simple Audio Recorder View with "hold to Record Button" and "Swipe to Cancel " Like WhatsApp

License: Apache License 2.0

Java 100.00%
whatsapp recordview swipe slide-to-cancel

recordview's Introduction

Android Arsenal Download

RecordView

A Simple Audio Recorder View with hold to Record Button and Swipe to Cancel

Demo

demo image

Install

Add this to your project build.gradle (for older versions only)

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io }
    }
}

Add this to your settings.gradle(for newer versions only)

dependencyResolutionManagement {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add this to your module build.gradle

dependencies {
    //for AppCompat use:
    //appcompat v26+ is higly recommended to support older APIs
    implementation 'com.devlomi.record-view:record-view:2.0.1'
  

    //for AndroidX use:
    implementation 'com.github.3llomi:RecordView:3.1.3'


}

Usage

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/parent_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <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/recv_ic_arrow"
        app:slide_to_cancel_arrow_color="#000000"
        app:slide_to_cancel_bounds="8dp"
        app:slide_to_cancel_margin_right="10dp"
        app:slide_to_cancel_text="Slide To Cancel"
        app:counter_time_color="#ff0000"
        />

    <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/recv_bg_mic"
        android:scaleType="centerInside"
        app:mic_icon="@drawable/recv_ic_mic_white" />


</RelativeLayout>

Java

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

//IMPORTANT
recordButton.setRecordView(recordView);

Handling States

recordView.setOnRecordListener(new OnRecordListener() {
            @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, boolean limitReached) {
                //Stop Recording..
                //limitReached to determine if the Record was finished when time limit reached.
                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");
            }

            @Override
            public void onLock() {
            //When Lock gets activated
            Log.d("RecordView", "onLock");
            }
            
        });

Handle Clicks for Record Button

recordButton.setListenForRecord(false);

 //ListenForRecord must be false ,otherwise onClick will not be called
recordButton.setOnRecordClickListener(new OnRecordClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "RECORD BUTTON CLICKED", Toast.LENGTH_SHORT).show();
                Log.d("RecordButton","RECORD BUTTON CLICKED");
            }
        });

Listen for Basket Animation End

recordView.setOnBasketAnimationEndListener(new OnBasketAnimationEnd() {
            @Override
            public void onAnimationEnd() {
                Log.d("RecordView", "Basket Animation Finished");
            }
        });

Enable Record Lock Feature

<com.devlomi.record_view.RecordLockView
        android:id="@+id/record_lock"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_above="@id/record_view_relative_layout"
        android:layout_alignParentRight="true"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="100dp" />
recordView.setLockEnabled(true);
recordView.setRecordLockImageView(findViewById(R.id.record_lock));

Change Swipe To Cancel Bounds (when the 'Slide To Cancel' Text View get before Counter). default is 8dp

recordView.setCancelBounds(8);//dp

Handling Permissions(Optional)

recordView.setRecordPermissionHandler(new RecordPermissionHandler() {
            @Override
            public boolean isPermissionGranted() {
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                    return true;
                }

                boolean recordPermissionAvailable = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO) == PERMISSION_GRANTED;
                if (recordPermissionAvailable) {
                    return true;
                }


                ActivityCompat.
                        requestPermissions(MainActivity.this,
                                new String[]{Manifest.permission.RECORD_AUDIO},
                                0);

                return false;

            }
        });

Some Customization

recordView.setSmallMicColor(Color.parseColor("#c2185b"));

recordView.setSlideToCancelText("TEXT");

// disable Sounds
recordView.setSoundEnabled(false);

// prevent recording under one Second (it's false by default)
recordView.setLessThanSecondAllowed(false);

// set Custom sounds onRecord 
// you can pass 0 if you don't want to play sound in certain state
recordView.setCustomSounds(R.raw.record_start,R.raw.record_finished,0);

// change slide To Cancel Text Color
recordView.setSlideToCancelTextColor(Color.parseColor("#ff0000"));
// change slide To Cancel Arrow Color
recordView.setSlideToCancelArrowColor(Color.parseColor("#ff0000"));
// change Counter Time (Chronometer) color
recordView.setCounterTimeColor(Color.parseColor("#ff0000"));

// enable or disable ShimmerEffect
recordView.setShimmerEffectEnabled(true);

// auto cancelling recording after timeLimit (In millis)  
recordView.setTimeLimit(30000);//30 sec

// set Trash Icon Color (when slide to cancel is triggered)
recordView.setTrashIconColor(Color.parseColor("#fff000"));

// enable or disable the Growing animation for record Button.
recordView.setRecordButtonGrowingAnimationEnabled(true);
// change scale up value on Growing animation.
recordButton.setScaleUpTo(1.5f);

// Lock Customization
recordLockView.setDefaultCircleColor(Color.parseColor("#0A81AB"));
recordLockView.setCircleLockedColor(Color.parseColor("#314E52"));
recordLockView.setLockColor(Color.WHITE);

recordButton.setSendIconResource(R.drawable.recv_ic_send)

Thanks/Credits

Looking for IOS Version?

try out iRecordView

Need a Chat app ๐Ÿ’ฌ ?

Check out FireApp Chat

FireApp
   Copyright 2018 AbdulAlim Rajjoub

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

recordview's People

Contributors

3llomi avatar mansya avatar oyacanli avatar sagar0-0 avatar sdarvish avatar shainsingh89 avatar vedraj360 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

recordview's Issues

Change image icon

I am using the recordButton.setListenForRecord(false); for switch my button to click and send a text message But I cant change the icon image.
How I can change the icon using setImageIcon ???

Listview and record view

Hi,
I have a problem when i add the record view to my layout, when i scroll in listview lthe item of list show on the tablayout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">

    <TextView
        android:id="@+id/tPasInfoOrganisation"
        android:layout_width="311dp"
        android:layout_height="69dp"
        android:text="On dirait que vous n'avez pas des tรขches ร  faire aujourd'hui."
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabsOrganisationDetail"
        app:layout_constraintVertical_bias="0.556" />

    <ImageView
        android:id="@+id/imageView9"
        android:layout_width="0dp"
        android:layout_height="90dp"
        android:scaleType="fitXY"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/topbackground"></ImageView>

    <ImageView
        android:id="@+id/b_call_organisation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:layout_marginEnd="8dp"
        android:scaleType="centerInside"
        android:src="@drawable/ic_call"
        android:tint="@android:color/white"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/lCommercialOrganisation"
        android:layout_width="0dp"
        android:layout_height="24dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="16dp"
        android:text="Commercial"
        android:textColor="@android:color/black"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/imageView12Organisation"
        app:layout_constraintTop_toBottomOf="@+id/tTitreOrganisation" />

    <ImageView
        android:id="@+id/imageView12Organisation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="4dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tTitreOrganisation"
        app:srcCompat="@drawable/ic_users" />

    <TextView
        android:id="@+id/tTitreOrganisation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="95dp"
        android:layout_marginEnd="16dp"
        android:text="Titre de l'organistion"
        android:textColor="@android:color/black"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabsOrganisationDetail"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_gravity="bottom"
        android:layout_marginTop="8dp"
        android:visibility="visible"
        android:background="#00FFFFFF"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/lCommercialOrganisation"
        app:tabIndicatorColor="@android:color/holo_red_dark"
        app:tabMode="fixed"
        app:tabTextAppearance="@style/MineCustomTabText">

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Timeline" />

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Dรฉtails" />

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Offres" />

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Contacts" />
    </com.google.android.material.tabs.TabLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/listviewtimelineOrganisation"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabsOrganisationDetail"
        android:visibility="gone"/>

    <ListView
        android:id="@+id/list_detail_organisation"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="2dp"
        android:layout_marginBottom="8dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabsOrganisationDetail"></ListView>

    <ListView
        android:id="@+id/list_organisation_offre"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="2dp"
        android:layout_marginBottom="8dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabsOrganisationDetail"></ListView>

    <ListView
        android:id="@+id/list_organisation_contact"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="2dp"
        android:layout_marginBottom="8dp"
        android:divider="@null"
        android:dividerHeight="0dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabsOrganisationDetail"></ListView>
    <ProgressBar
        android:id="@+id/progressBarTimelineOrganisation"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:indeterminateDrawable="@drawable/progressmain"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="25dp"
        android:text="Organisation dรฉtail"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="@+id/imageView9"
        app:layout_constraintTop_toTopOf="@+id/imageView9" />

    <com.github.clans.fab.FloatingActionMenu
        android:id="@+id/optionOrganisationMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="11dp"
        android:layout_marginRight="11dp"
        android:layout_marginBottom="11dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:menu_animationDelayPerItem="55"
        app:menu_backgroundColor="@android:color/transparent"
        app:menu_buttonSpacing="0dp"
        app:menu_colorNormal="@color/colorPrimary"
        app:menu_colorPressed="@color/colorDealPerdue"
        app:menu_colorRipple="#99d4d4d4"
        app:menu_fab_size="normal"
        app:menu_icon="@drawable/fab_add"
        app:menu_labels_colorNormal="#333"
        app:menu_labels_colorPressed="#444"
        app:menu_labels_colorRipple="#66efecec"
        app:menu_labels_cornerRadius="3dp"
        app:menu_labels_ellipsize="none"
        app:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
        app:menu_labels_margin="0dp"
        app:menu_labels_maxLines="-1"
        app:menu_labels_padding="8dp"
        app:menu_labels_position="left"
        app:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
        app:menu_labels_showShadow="true"
        app:menu_labels_singleLine="false"
        app:menu_labels_textColor="#f2f1f1"
        app:menu_labels_textSize="15sp"
        app:menu_openDirection="up"
        app:menu_shadowColor="#FFFFFF"
        app:menu_shadowRadius="4dp"
        app:menu_shadowXOffset="1dp"
        app:menu_shadowYOffset="4dp"
        app:menu_showShadow="true"
        tools:ignore="MissingConstraints">

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/bOptionAddNoteOrganisation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_note_add_24px"
            app:fab_colorNormal="#FFFFFF"
            app:fab_label="Ajouter une note"
            app:fab_size="mini" />

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/bOptionAddAudioOrganisation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_mic_24px"
            app:iconTint="@android:color/white"
            app:fab_colorNormal="#FFFFFF"
            app:fab_label="Enregistrement vocal"
            app:fab_size="mini" />

        <com.github.clans.fab.FloatingActionButton
            android:id="@+id/bOptionAddFichierOrganisation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_cloud_upload_24px"
            app:iconTint="@android:color/white"
            app:fab_colorNormal="#FFFFFF"
            app:fab_label="Tรฉlรฉcharger un fichier"
            app:fab_size="mini" />
    </com.github.clans.fab.FloatingActionMenu>

    <com.devlomi.record_view.RecordButton
        android:id="@+id/record_button_organisation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:background="@drawable/recv_bg_mic"
        android:scaleType="centerInside"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:mic_icon="@drawable/recv_ic_mic_white" />

    <com.devlomi.record_view.RecordView
        android:id="@+id/record_view_organisation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:counter_time_color="#ff0000"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:slide_to_cancel_arrow="@drawable/recv_ic_arrow"
        app:slide_to_cancel_arrow_color="#000000"
        app:slide_to_cancel_bounds="8dp"
        app:slide_to_cancel_margin_right="10dp"
        app:slide_to_cancel_text="Slide To Cancel" />

</androidx.constraintlayout.widget.ConstraintLayout>

and this is a screen of the problem :

Screenshot_20200414_124934_comunik com comuniksaleslite

onstart

I will try to setup recordview, but always call on start in the init, so, I will try to make gone a textview while is recording, and go back to show when finish, so I put inside onstart() text gone and in onfinish() text visible, but onstart is always called when init the activity, so my text always is gone when start activity

Record Cancelled when clicking the Record Button

I'm using this record button in card view which is in center of my layout.
`<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="5dp"
app:cardElevation="5dp"
app:cardUseCompatPadding="true"
>

        <RelativeLayout
            android:id="@+id/parent_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            >

            <com.devlomi.record_view.RecordView
                android:id="@+id/record_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toStartOf="@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_alignParentEnd="true"
                android:background="@drawable/bg_mic"
                android:scaleType="centerInside"
                app:src="@drawable/ic_mic_white"
                />


        </RelativeLayout>

    </android.support.v7.widget.CardView>`

When ever I click button, it is canceling suddenly. That mic is not getting bigger like in sample app. What could be the reason for this issue?

Not working with Big Zoom

When changing the zoom and font size from the default I can't perform long-click to record audio its called Action cancel directly after start

Target with the name "basket" cannot be found in the VectorDrawable to be animated

Thanks for the Library but we have got issues in android Orio (Android Version 8).

  1. Click on Mike Icon and Recording is Working Fine.
    2.Hold on Record button and swipe left to cancel and we got Exception in android 8 version.

For Your Reference:
java.lang.IllegalStateException: Target with the name "basket" cannot be found in the VectorDrawable to be animated.
at android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState.prepareLocalAnimator(AnimatedVectorDrawable.java:839)
at android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState.prepareLocalAnimators(AnimatedVectorDrawable.java:817)
at android.graphics.drawable.AnimatedVectorDrawable.ensureAnimatorSet(AnimatedVectorDrawable.java:930)
at android.graphics.drawable.AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:914)
at android.support.graphics.drawable.AnimatedVectorDrawableCompat.start(AnimatedVectorDrawableCompat.java:697)
at com.devlomi.record_view.RecordView$1.onAnimationEnd(RecordView.java:145)
at android.view.animation.Animation$3.run(Animation.java:382)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

AnimationHelper - NullPointerException

Hello. I noticed one crash in crash logs:

java.lang.NullPointerException: at com.devlomi.record_view.AnimationHelper.clearAlphaAnimation (AnimationHelper.java:170) at com.devlomi.record_view.RecordView.onActionUp (RecordView.java:312) at com.devlomi.record_view.RecordButton.onTouch (RecordButton.java:113)

No sure how it happens, I cannot reproduce it.

record button releases immediately!

Hi, I am using the latest version of Record-view library (compile 'com.devlomi.record-view:record-view:2.0.1'). I want to use it in a dialog view. When I use library codes in the activity everything works fine but in dialog view when I touch and hold the record button it acts like I tap it. I mean touch and release record button happens immediately! the code below is my dialog XML layout:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="300dp"
    android:padding="16dp"
    android:layout_margin="24dp"
    android:background="@drawable/background_dialog"
    android:layout_height="wrap_content">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <com.alexina.counselor.CustomViews.mTextView
                android:drawablePadding="8dp"
                android:gravity="bottom"
                android:textAlignment="gravity"
                android:drawableLeft="@drawable/ic_clock"
                android:textColor="@color/textColorMedium"
                android:id="@+id/input_time"
                android:text="@string/time"
                android:textSize="12sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/input_cost"
                android:layout_alignParentStart="true" />

            <ImageView
                android:padding="4dp"
                android:background="@drawable/bg_mic_btn"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/tejarat"
                android:id="@+id/input_logo"
                android:layout_width="32dp"
                android:layout_height="32dp" />


            <com.alexina.counselor.CustomViews.mTextViewBold
                android:drawableLeft="@drawable/ic_credit_card"
                android:id="@+id/input_cost"
                android:gravity="center"
                android:textSize="24sp"
                android:paddingLeft="12dp"
                android:paddingRight="24dp"
                android:textColor="@color/textColorLight"
                android:text="120000"
                android:textAlignment="gravity"
                android:paddingTop="4dp"
                android:paddingBottom="2dp"
                android:layout_marginTop="4dp"
                android:layout_below="@+id/input_logo"
                android:background="@color/colorPrimary"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <LinearLayout
                android:layout_below="@+id/input_cost"
                android:orientation="vertical"
                android:id="@+id/input_category"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <com.github.florent37.expansionpanel.ExpansionHeader
                    android:background="@color/colorPrimaryDark"
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent"
                    app:expansion_headerIndicator="@+id/headerIndicator"
                    app:expansion_layout="@+id/expansionLayout"
                    app:expansion_toggleOnClick="true">


                    <android.support.v7.widget.AppCompatImageView

                        android:adjustViewBounds="true"
                        android:id="@+id/headerIndicator"
                        android:layout_gravity="center_vertical|right"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="12dp"
                        android:layout_width="wrap_content"
                        app:srcCompat="@drawable/ic_expand_button" />

                    <com.alexina.counselor.CustomViews.mTextView
                        android:paddingTop="4dp"
                        android:paddingBottom="4dp"
                        android:layout_marginRight="32dp"
                        android:text="@string/category"
                        android:textSize="12sp"
                        android:textColor="@color/textColorMedium"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />


                </com.github.florent37.expansionpanel.ExpansionHeader>

                <com.github.florent37.expansionpanel.ExpansionLayout
                    android:id="@+id/expansionLayout"
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent">


                    <segmented_control.widget.custom.android.com.segmentedcontrol.SegmentedControl

                        android:background="@color/colorPrimaryDark"
                        android:id="@+id/segmented_control"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        app:radiusForEverySegment="true"
                        app:columnCount="4"
                        app:distributeEvenly="false"
                        app:radius="14dp"
                        app:textVerticalPadding="4dp"
                        app:strokeWidth="0.5dp"
                        app:segmentVerticalMargin="2dp"
                        app:segmentHorizontalMargin="2dp"
                        app:unSelectedStrokeColor="@color/colorAccent"
                        app:selectedTextColor="@color/textColorLight"
                        app:selectedStrokeColor="@color/toast"
                        app:selectedBackgroundColor="@color/toast"/>

                </com.github.florent37.expansionpanel.ExpansionLayout>


            </LinearLayout>



            <ImageView
                android:scaleType="centerCrop"
                android:src="@drawable/map"
                android:id="@+id/input_map"
                android:layout_width="match_parent"
                android:layout_height="180dp"
                android:layout_below="@+id/input_category" />

            <ImageView
                android:padding="4dp"
                android:background="@drawable/bg_mic_btn"
                android:src="@drawable/ic_refresh"
                android:id="@+id/input_map_refresh"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_margin="4dp"
                android:layout_below="@+id/input_category"
                android:layout_alignParentStart="true" />

            <com.alexina.counselor.CustomViews.mTextView
                android:paddingRight="12dp"
                android:paddingLeft="24dp"
                android:textColor="@color/tik"
                android:id="@+id/input_address"
                android:textSize="12sp"
                android:textAlignment="center"
                android:background="@color/colorPrimary"
                android:text="@string/address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/input_map"
                android:paddingTop="2dp"
                android:layout_alignParentStart="true" />


            <RelativeLayout
                android:layout_margin="8dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/input_address"
                android:layout_alignParentStart="true">

                <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/recv_ic_arrow"
                    app:slide_to_cancel_arrow_color="#000000"
                    app:slide_to_cancel_bounds="8dp"
                    app:slide_to_cancel_margin_right="10dp"
                    app:slide_to_cancel_text="Slide To Cancel"
                    app:counter_time_color="#ff0000"
                    />

                <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/recv_bg_mic"
                    android:scaleType="centerInside"
                    app:mic_icon="@drawable/recv_ic_mic_white" />


            </RelativeLayout>


            <ImageButton
                android:src="@drawable/ic_photo_camera_black_24dp"
                android:background="@drawable/bg_mic_btn"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:id="@+id/imageButton"
                android:layout_marginLeft="4dp"
                android:layout_marginRight="4dp"
                android:layout_alignTop="@+id/input_map_refresh"
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="11dp" />

            <com.alexina.counselor.CustomViews.mEdittext
                android:id="@+id/input_description"
                android:background="@drawable/background_edittext"
                android:hint="@string/explanation"
                android:textSize="16sp"
                android:padding="8sp"
                android:layout_marginTop="4dp"
                android:textColorHint="@color/textColorMedium"
                android:inputType="textMultiLine"
                android:gravity="top|right"
                android:textColor="@color/textColorLight"
                android:layout_below="@+id/input_address"
                android:layout_width="match_parent"
                android:layout_height="72sp" />

            <LinearLayout
                android:layout_marginTop="4dp"
                android:layout_below="@+id/input_description"
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <com.alexina.counselor.CustomViews.mButton
                    android:id="@+id/dialog_cancel_btn"
                    android:textColor="@color/textColorMedium"
                    android:text="@string/cancel"
                    android:layout_margin="2dp"
                    android:background="@drawable/background_dialog_btn_solid_neg"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content" />

                <com.alexina.counselor.CustomViews.mButton
                    android:id="@+id/dialog_approve_btn"
                    android:textColor="@color/textColorLight"
                    android:text="@string/save"
                    android:layout_margin="2dp"
                    android:background="@drawable/background_dialog_btn_solid_pos"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content" />

            </LinearLayout>

        </RelativeLayout>

    </LinearLayout>


</ScrollView>

and my Java code is:

public static void popUpDialogInput(final Context context, List<String> categories, int layout,
                                        View.OnClickListener approveClick, View.OnClickListener cancelClick){

        dialog = new Dialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(layout);
        dialog.setCancelable(false);
        Button ok = (Button)dialog.findViewById(R.id.dialog_approve_btn);
        Button cancel = (Button)dialog.findViewById(R.id.dialog_cancel_btn);
        ok.setOnClickListener(approveClick);
        cancel.setOnClickListener(cancelClick);

        RecordView recordView = (RecordView) dialog.findViewById(R.id.record_view);
        RecordButton recordButton = (RecordButton) dialog.findViewById(R.id.record_button);
        //IMPORTANT
        recordButton.setRecordView(recordView);
        recordView.setSlideToCancelText(context.getString(R.string.say_sth));
        recordView.setOnRecordListener(new OnRecordListener() {
            @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..    
            }

            @Override
            public void onLessThanSecond() {
                //When the record time is less than One Second
                Log.d("RecordView", "onLessThanSecond");
            }
        });

        final SegmentedControl segmentedControl = (SegmentedControl) dialog.findViewById(R.id.segmented_control);
        segmentedControl.addSegments(categories);
        segmentedControl.setAdapter(new AdapterAppSegment());
        segmentedControl.addOnSegmentSelectListener(new OnSegmentSelectedListener() {
            @Override
            public void onSegmentSelected(SegmentViewHolder segmentViewHolder, boolean b, boolean b1) {
                Log.d("ALEXINA", "onSegmentSelected");
            }
        });

        segmentedControl.addOnSegmentClickListener(new OnSegmentClickListener() {
            @Override
            public void onSegmentClick(SegmentViewHolder segmentViewHolder) {
                Log.d("ALEXINA", "onSegmentClick");

            }
        });

        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.show();
    }

Problems with RecyclerView

I'm using RecyclerView to show a list of questions and for each one, displayed inside a CardView .. it has a recordbutton and a recordview .. By clicking on the button and moving it up and taking it .. instead of canceling press the button again. I believe the problem is due to the existence of scroll .. but I can not solve it. If anyone has ideas to help ..

InvocationTargetException

05-07 14:39:46.755 17886-17886/com.vakilsearch.libra W/System.err: android.view.InflateException: Binary XML file line #91: Binary XML file line #91: Error inflating class com.devlomi.record_view.RecordView
Caused by: android.view.InflateException: Binary XML file line #91: Error inflating class com.devlomi.record_view.RecordView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at com.vakilsearch.libra.adapter.CaseTimelineAdapter.getView(CaseTimelineAdapter.java:108)
at com.vakilsearch.libra.paginate.abslistview.WrapperAdapter.getView(WrapperAdapter.java:64)
at android.widget.AbsListView.obtainView(AbsListView.java:2362)
at android.widget.ListView.makeAndAddView(ListView.java:1970)
at android.widget.ListView.fillDown(ListView.java:704)
at android.widget.ListView.fillFromTop(ListView.java:765)
at android.widget.ListView.layoutChildren(ListView.java:1716)
at android.widget.AbsListView.onLayout(AbsListView.java:2161)
05-07 14:39:46.756 17886-17886/com.vakilsearch.libra W/System.err: at com.vakilsearch.libra.customview.PinnedHeaderListView.PinnedHeaderListView.onLayout(PinnedHeaderListView.java:117)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:606)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at ru.noties.scrollable.ScrollableLayout.onLayout(ScrollableLayout.java:786)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:724)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2069)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: android.content.res.Resources$NotFoundException: Drawable com.vakilsearch.libra:drawable/basket_animated with resource ID #0x7f080073
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/basket_animated.xml from drawable resource ID #0x7f080073
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:725)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)
at android.content.res.Resources.getDrawable(Resources.java:767)
at android.support.v4.content.res.ResourcesCompat.getDrawable(ResourcesCompat.java:80)
at android.support.graphics.drawable.AnimatedVectorDrawableCompat.create(AnimatedVectorDrawableCompat.java:210)
at com.devlomi.record_view.RecordView.init(RecordView.java:121)
at com.devlomi.record_view.RecordView.(RecordView.java:69)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
05-07 14:39:46.757 17886-17886/com.vakilsearch.libra W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at com.vakilsearch.libra.adapter.CaseTimelineAdapter.getView(CaseTimelineAdapter.java:108)
at com.vakilsearch.libra.paginate.abslistview.WrapperAdapter.getView(WrapperAdapter.java:64)
at android.widget.AbsListView.obtainView(AbsListView.java:2362)
at android.widget.ListView.makeAndAddView(ListView.java:1970)
at android.widget.ListView.fillDown(ListView.java:704)
at android.widget.ListView.fillFromTop(ListView.java:765)
at android.widget.ListView.layoutChildren(ListView.java:1716)
at android.widget.AbsListView.onLayout(AbsListView.java:2161)
at com.vakilsearch.libra.customview.PinnedHeaderListView.PinnedHeaderListView.onLayout(PinnedHeaderListView.java:117)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:606)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at ru.noties.scrollable.ScrollableLayout.onLayout(ScrollableLayout.java:786)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:724)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2069)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.VectorDrawable
at android.graphics.drawable.AnimatedVectorDrawable.inflate(AnimatedVectorDrawable.java:373)
at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715)
... 88 more

New logo/icon proposal

Good day Sir I am a graphic designer and i am interested in designing a logo for your good project. I will be doing it as a gift for free. I just need your permission first before i begin my design. Hoping for your positive feedback. Thanks

Does not work with fragments!!

I've tried ur library but it does not show the recording button when added to a fragment I've examined it in various android versions but none of them worked!

Pull Request declined

Hi, I cloned this repository because I like this library and I refactored to Kotlin all the code to help but, I can't push the code because I don't have permissions.
Please, can you give me permissions to push the Kotlin code?

Thank you very much ;)
-Andreu35.

android.content.res.Resources$NotFoundException

Device :- Samsung galaxy Note 2
Version:- Android 4.4.2

Crash Log

  java.lang.RuntimeException: Unable to start activity ComponentInfo{in.eightfolds.soundvision/in.eightfolds.soundvision.activity.MusicListActivity}: android.view.InflateException: Binary XML file line #43: Error inflating class com.devlomi.record_view.RecordView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
    at android.app.ActivityThread.access$900(ActivityThread.java:175)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:146)
    at android.app.ActivityThread.main(ActivityThread.java:5602)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.view.InflateException: Binary XML file line #43: Error inflating class com.devlomi.record_view.RecordView
    at android.view.LayoutInflater.createView(LayoutInflater.java:626)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
    at in.eightfolds.soundvision.activity.MusicListActivity.onCreate(MusicListActivity.java:63)
    at android.app.Activity.performCreate(Activity.java:5451)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)ย 
    at android.app.ActivityThread.access$900(ActivityThread.java:175)ย 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)ย 
    at android.os.Handler.dispatchMessage(Handler.java:102)ย 
    at android.os.Looper.loop(Looper.java:146)ย 
    at android.app.ActivityThread.main(ActivityThread.java:5602)ย 
    at java.lang.reflect.Method.invokeNative(Native Method)ย 
    at java.lang.reflect.Method.invoke(Method.java:515)ย 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)ย 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)ย 
    at dalvik.system.NativeStart.main(Native Method)ย 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.constructNative(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at android.view.LayoutInflater.createView(LayoutInflater.java:600)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)ย 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)ย 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)ย 
    at in.eightfolds.soundvision.activity.MusicListActivity.onCreate(MusicListActivity.java:63)ย 
    at android.app.Activity.performCreate(Activity.java:5451)ย 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)ย 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)ย 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)ย 
    at android.app.ActivityThread.access$900(ActivityThread.java:175)ย 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)ย 
    at android.os.Handler.dispatchMessage(Handler.java:102)ย 
    at android.os.Looper.loop(Looper.java:146)ย 
    at android.app.ActivityThread.main(ActivityThread.java:5602)ย 
    at java.lang.reflect.Method.invokeNative(Native Method)ย 
    at java.lang.reflect.Method.invoke(Method.java:515)ย 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)ย 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)ย 
    at dalvik.system.NativeStart.main(Native Method)ย 
 Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/ic_delete.png from xml type xml resource ID #0x7f0700c5
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:3715)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:3662)
    at android.content.res.Resources.getXml(Resources.java:2207)
    at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:558)
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.inflate(AnimatedVectorDrawableCompat.java:458)
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.createFromXmlInner(AnimatedVectorDrawableCompat.java:250)
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.create(AnimatedVectorDrawableCompat.java:230)
    at com.devlomi.record_view.RecordView.init(RecordView.java:121)
    at com.devlomi.record_view.RecordView.<init>(RecordView.java:69)
    at java.lang.reflect.Constructor.constructNative(Native Method)ย 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)ย 
    at android.view.LayoutInflater.createView(LayoutInflater.java:600)ย 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)ย 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)ย 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)ย 
    at in.eightfolds.soundvision.activity.MusicListActivity.onCreate(MusicListActivity.java:63)ย 
    at android.app.Activity.performCreate(Activity.java:5451)ย 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)ย 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)ย 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)ย 
    at android.app.ActivityThread.access$900(ActivityThread.java:175)ย 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)ย 
    at android.os.Handler.dispatchMessage(Handler.java:102)ย 
    at android.os.Looper.loop(Looper.java:146)ย 
    at android.app.ActivityThread.main(ActivityThread.java:5602)ย 
    at java.lang.reflect.Method.invokeNative(Native Method)ย 
    at java.lang.reflect.Method.invoke(Method.java:515)ย 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)ย 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)ย 
    at dalvik.system.NativeStart.main(Native Method)ย 
 Caused by: java.io.FileNotFoundException: Corrupt XML binary file
    at android.content.res.AssetManager.openXmlAssetNative(Native Method)
    at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:488)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:3693)
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:3662)ย 
    at android.content.res.Resources.getXml(Resources.java:2207)ย 
    at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:558)ย 
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.inflate(AnimatedVectorDrawableCompat.java:458)ย 
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.createFromXmlInner(AnimatedVectorDrawableCompat.java:250)ย 
    at android.support.graphics.drawable.AnimatedVectorDrawableCompat.create(AnimatedVectorDrawableCompat.java:230)ย 
    at com.devlomi.record_view.RecordView.init(RecordView.java:121)ย 
    at com.devlomi.record_view.RecordView.<init>(RecordView.java:69)ย 
    at java.lang.reflect.Constructor.constructNative(Native Method)ย 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)ย 
    at android.view.LayoutInflater.createView(LayoutInflater.java:600)ย 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:498)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:398)ย 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:354)ย 
    at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)ย 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)ย 
    at in.eightfolds.soundvision.activity.MusicListActivity.onCreate(MusicListActivity.java:63)ย 
    at android.app.Activity.performCreate(Activity.java:5451)ย 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)ย 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)ย 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)ย 
    at android.app.ActivityThread.access$900(ActivityThread.java:175)ย 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)ย 
    at android.os.Handler.dispatchMessage(Handler.java:102)ย 
    at android.os.Looper.loop(Looper.java:146)ย 
    at android.app.ActivityThread.main(ActivityThread.java:5602)ย 
    at java.lang.reflect.Method.invokeNative(Native Method)ย 
    at java.lang.reflect.Method.invoke(Method.java:515)ย 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)ย 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)ย 
    at dalvik.system.NativeStart.main(Native Method)ย 

can i build your library with 23.4.0?

Hi

I have whole projects on basis of 23.4.0, when i am replacing it with 27.1.1 it gives me error regarding the layout_behavior already defined in build folders so that error is very to resolve if there is someway to integrate without 27.1.1, please let me know.

Time limit?

Is there a way to limit the recording to a certain time?

Slide to cancel not works

Seems that the feature of slide to left for cancel is not working, in my case I can slide to the left the button to cancel. Is that feature already implemented?

When you finish recording, the record button disappears.

If you click the record button and release immediately or even if you hold and aggravation is successful the button disappears. If I drag to the side and cancel the recording it does not disappear.

<com.devlomi.record_view.RecordButton android:id="@+id/recordButton" android:layout_width="30dp" android:layout_height="30dp" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:layout_gravity="center_vertical|right" android:layout_marginTop="5dp" android:layout_marginEnd="16dp" android:layout_marginBottom="5dp" android:elevation="1dp" android:minWidth="44dp" android:minHeight="44dp" android:scaleType="fitCenter" android:src="@drawable/microphone" android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" />

use in fragment

hi for use in fragment what do i do ?
my error if use in fragment :

E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.devlomi.record_view.RecordView.onActionDown(com.devlomi.record_view.RecordButton, android.view.MotionEvent)' on a null object reference
at com.devlomi.record_view.RecordButton.onTouch(RecordButton.java:104)

RecordView requires this function

RecordView lacks an important functionality of limiting the record time.

  • A new function should be created which allows to provide the record time limit until which to record and then automatically calls the onFinish function of onRecordListener.

Not working in scrollview prperly

when i drag record button from top/bottom/right , buttton is hang and after that i press again record button to get old situation of record button and recording was canaclled

Mic button not appear xamarin.android

image

I can't make mic appear even if i use the same icons you provided background appear but the mic not
I used with xamarin.android
my 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:rec="http://schemas.android.com/apk/lib/Karamunting.Android.3llomi.RecordView"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fadingEdgeLength="0dp"
    android:fillViewport="true"
    android:overScrollMode="never"
    android:scrollbars="none"
    android:animateLayoutChanges="true"
    android:id="@+id/constraint_layout">
    <RelativeLayout
        android:id="@+id/cc_chat_container"
        android:layout_width="match_parent"
        android:animateLayoutChanges="true"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearLayoutFooter"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
            <RelativeLayout
                android:id="@+id/relativeLayoutControlsHolder"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#b2b2b2"
                android:padding="3dp">
                <ImageButton
                    android:src="@android:drawable/ic_menu_camera"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:id="@+id/img_camera"
                    android:layout_marginRight="6dp"
                    android:background="?android:selectableItemBackground" />
                <ImageButton
                    android:src="@android:drawable/ic_menu_gallery"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:id="@+id/img_btn_gallary"
                    android:layout_toRightOf="@+id/img_camera"
                    android:background="?android:selectableItemBackground" />
                <github.ankushsachdeva.emojicon.EmojiconEditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:autoLink="web"
                    android:ems="10"
                    android:padding="10dp"
                    android:inputType="textCapSentences|textMultiLine"
                    android:background="@drawable/cc_rounded_border_edittext"
                    android:linksClickable="true"
                    android:maxLines="3"
                    android:layout_toRightOf="@+id/img_btn_gallary"
                    android:hint="Type your message"
                    android:textColorHint="#cccccc"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="45dp"
                    android:scrollbars="vertical"
                    android:paddingEnd="33dp"
                    app:emojiconSize="28sp"
                    android:paddingRight="33dp"
                    android:id="@+id/editTextChatMessage" />
                <ImageButton
                    android:id="@+id/img_btn_smiley"
                    android:layout_width="35dp"
                    android:layout_height="42.5dp"
                    android:adjustViewBounds="true"
                    android:layout_marginLeft="-49dp"
                    android:layout_marginStart="-49dp"
                    android:background="?android:selectableItemBackground"
                    android:padding="4dp"
                    android:scaleType="fitCenter"
                    android:layout_toLeftOf="@+id/record_btn"
                    android:src="@drawable/cc_ic_menu_sticker" />
                <com.devlomi.record_view.RecordView
                    android:id="@+id/record_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    rec:slide_to_cancel_arrow="@drawable/recv_ic_arrow"
                    rec:slide_to_cancel_arrow_color="#000000"
                    rec:slide_to_cancel_bounds="8dp"
                    rec:slide_to_cancel_margin_right="15dp"
                    rec:slide_to_cancel_text="Slide To Cancel"
                    rec:counter_time_color="#ff0000" />
                <com.devlomi.record_view.RecordButton
                    android:id="@+id/record_btn"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_alignParentRight="true"
                    android:background="@drawable/microphone_background"
                    android:scaleType="fitCenter"
                    rec:mic_icon="@drawable/ic_microphone_gray"
                    android:layout_marginLeft="2.9dp" />
  
                <ImageButton
                    android:src="@android:drawable/ic_menu_send"
                    android:layout_marginLeft="2.5dp"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:id="@+id/send_btn"
                    android:background="?android:selectableItemBackground"
                    android:visibility="gone"
                    android:layout_alignParentRight="true" />
            </RelativeLayout>
        </LinearLayout>
        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swipeRefreshLayout"
            android:layout_width="match_parent"
            android:layout_above="@id/linearLayoutFooter"
            android:layout_height="match_parent" />
        <android.support.v7.widget.RecyclerView
            android:id="@+id/list_chat"
            android:layout_width="match_parent"
            android:layout_above="@id/linearLayoutFooter"
            android:layout_height="wrap_content"
            android:background="#fff"
            android:divider="@null"
            android:dividerHeight="0dp"
            android:scrollbars="vertical"
            android:paddingBottom="2dp" />
    </RelativeLayout>
</android.support.constraint.ConstraintLayout>

Weird scrolling behaviour in latest version of library

ezgif-1-164aec36ae

The correct scrolling behaviour is that it should only scroll upto "Mp3 files" TextView . It was working fine with beta version of library .

version used implementation 'com.devlomi.record-view:record-view:2.0.1'

Here is my xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@color/backGround"
    android:orientation="vertical"
   >

    <include layout="@layout/default_toolbar" />

    <TextView
        style="@style/tvIntermediateHeading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Mp3 files" />


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerview_songsList"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </android.support.v7.widget.RecyclerView>

        <RelativeLayout
            android:id="@+id/parent_layout"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true">

            <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_marginBottom="15dp"
                android:layout_toLeftOf="@id/record_button"
                app:slide_to_cancel_arrow="@drawable/ic_left_arrow"
                app:slide_to_cancel_margin_right="20dp"
                app:slide_to_cancel_text="Slide To Cancel" />

            <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:layout_marginBottom="15dp"
                android:layout_marginRight="5dp"
                android:background="@drawable/mic_bg"
                android:padding="20dp"
                android:scaleType="centerInside"
                app:srcCompat="@drawable/ic_microphone"
                app:tint="@color/white"
                tools:ignore="VectorDrawableCompat" />
        </RelativeLayout>

    </RelativeLayout>

</LinearLayout>


If I remove the Relative Layout with id "parent_layout" the scroll is working fine

What's the reason for this issue and how can I fix it ?

Audio recording issue

When I click on the mic icon without holding it and next time when I try to record by holding its not getting recorded.

if (recorder != null) {
recorder.stop();
recorder.release();
}
Exception occuring at recorder.stop();

Got NullPointerException when cancelled the recording

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.createRTAnimator(AnimatedVectorDrawable.java:1330)
at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.parseAnimatorSet(AnimatedVectorDrawable.java:1288)
at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.parseAnimatorSet(AnimatedVectorDrawable.java:1286)
at android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT.init(AnimatedVectorDrawable.java:1255)
at android.graphics.drawable.AnimatedVectorDrawable.ensureAnimatorSet(AnimatedVectorDrawable.java:919)
at android.graphics.drawable.AnimatedVectorDrawable.start(AnimatedVectorDrawable.java:902)
at android.support.graphics.drawable.AnimatedVectorDrawableCompat.start(AnimatedVectorDrawableCompat.java:697)
at com.devlomi.record_view.RecordView$1.onAnimationEnd(RecordView.java:144)
at android.view.animation.Animation$3.run(Animation.java:381)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6236)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)

Need to Change the Timer-text Color

The library is good, but we almost always need custom color-theme where it'd be better if I can change the color of the timer.

As per the code, I can see it's a Chronometer extending TextView, so it should be easily doable if that Chronometer is made accessible by any get-method. Any set-method or resource-property to update the color can also be alternate solutions.

Or, is there already any solution I'm missing?

Bonus: setSlideToCancelTextColor(int color) lets update the text-color, but the arrow is unchanged. Can't it be made changeable via resource-property or another setter method?

remove the circle background while on idle

How can i remove the green oval background of the mic while idle but have it inflate when it's clicked ? when i try to remove the background, it is removed from both idle state and clicked state.

Not working on android API level 17

android.view.InflateException: Binary XML file line #80: Error inflating class com.devlomi.record_view.RecordView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2282) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2340) at android.app.ActivityThread.access$800(ActivityThread.java:157) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5293) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(NativeStart.java)

Close App at second time that I try to record!

Hi,thanks for your library.It's very useful for me, but I have a problem.Every time (not the first )I try to record audio....the app crashes.
Below the error:
01-16 14:31:23.668 897-897/com.example.alex.navdemo A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x20 in tid 897 (le.alex.navdemo) [ 01-16 14:31:23.669 453: 453 W/ debuggerd: handling request: pid=897 uid=10171 gid=10171 tid=897
Could You point me in the right way to get start to use your library ???
Thanks in advance !!
Alex
this is my code:

` recordView.setOnRecordListener(new OnRecordListener() {
@OverRide
public void onStart() {
//Start Recording..
try {
start();
} catch (IOException e) {
e.printStackTrace();
}
Log.d("RecordView", "onStart");
}
@OverRide
public void onCancel() {
//On Swipe To Cancel
try {
stop();
} catch (IOException e) {
e.printStackTrace();
}
Log.d("RecordView", "onCancel");

        }
                    @Override
                    public void onFinish(long recordTime) {
                    //Stop Recording..
                     try {
                    stop();
                    } catch (IOException e) {
                    e.printStackTrace();
                    }
        //   String time = recordButton.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");
        }
    });
    
    recordButton.setListenForRecord(true);`
public void start() throws IOException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
    String currentDateandTime = sdf.format(new Date());
    String sd = Environment.getExternalStorageDirectory().toString()+
    File.separator + Environment.DIRECTORY_DOWNLOADS+
    File.separator +"testAudio"+ currentDateandTime +".3gpp";
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(sd);
    recorder.prepare();
    recorder.start();
}

public void stop() throws IOException {
    recorder.stop();
    recorder.release();
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.