kandi background
Explore Kits

CircleIndicator | A lightweight indicator like in nexus 5 launcher | Runtime Evironment library

 by   ongakuer Java Version: v2.1.6 License: Apache-2.0

 by   ongakuer Java Version: v2.1.6 License: Apache-2.0

Download this library from

kandi X-RAY | CircleIndicator Summary

CircleIndicator is a Java library typically used in Server, Runtime Evironment applications. CircleIndicator has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has medium support. You can download it from GitHub, Maven.
A lightweight indicator like in nexus 5 launcher
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • CircleIndicator has a medium active ecosystem.
  • It has 3918 star(s) with 701 fork(s). There are 91 watchers for this library.
  • It had no major release in the last 12 months.
  • There are 15 open issues and 119 have been closed. On average issues are closed in 127 days. There are 6 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of CircleIndicator is v2.1.6
CircleIndicator Support
Best in #Runtime Evironment
Average in #Runtime Evironment
CircleIndicator Support
Best in #Runtime Evironment
Average in #Runtime Evironment

quality kandi Quality

  • CircleIndicator has 0 bugs and 0 code smells.
CircleIndicator Quality
Best in #Runtime Evironment
Average in #Runtime Evironment
CircleIndicator Quality
Best in #Runtime Evironment
Average in #Runtime Evironment

securitySecurity

  • CircleIndicator has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • CircleIndicator code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
CircleIndicator Security
Best in #Runtime Evironment
Average in #Runtime Evironment
CircleIndicator Security
Best in #Runtime Evironment
Average in #Runtime Evironment

license License

  • CircleIndicator is licensed under the Apache-2.0 License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
CircleIndicator License
Best in #Runtime Evironment
Average in #Runtime Evironment
CircleIndicator License
Best in #Runtime Evironment
Average in #Runtime Evironment

buildReuse

  • CircleIndicator releases are available to install and integrate.
  • Deployable package is available in Maven.
  • Build file is available. You can build the component from source.
  • Installation instructions are not available. Examples and code snippets are available.
  • It has 2132 lines of code, 152 functions and 53 files.
  • It has medium code complexity. Code complexity directly impacts maintainability of the code.
CircleIndicator Reuse
Best in #Runtime Evironment
Average in #Runtime Evironment
CircleIndicator Reuse
Best in #Runtime Evironment
Average in #Runtime Evironment
Top functions reviewed by kandi - BETA

kandi has reviewed CircleIndicator and discovered the below as its top functions. This is intended to give you an instant insight into CircleIndicator implemented functionality, and help decide if they suit your requirements.

  • Animator when a page is selected .
  • Initializes the sample list .
  • Registers new view .
  • Compute the minimum y offset for a SnackbarIndicator .
  • onClick onClick
  • Instantiates a text view .
  • Returns the position of the currently selected snap view .
  • Sets the ViewPagerager .
  • Converts a position to real position .
  • Get loop position .

CircleIndicator Key Features

A lightweight indicator like in nexus 5 launcher

default

copy iconCopydownload iconDownload
##### AndroidX
```groovy
dependencies {
    implementation 'me.relex:circleindicator:2.1.6'
}
```

##### Android Support Library
```groovy
dependencies {
    implementation 'me.relex:circleindicator:1.3.2'
}
```


Usage
--------

| Class						| Widget			|
| --------------------------------------------- | -----------------------------	|
| me.relex.circleindicator.CircleIndicator	| ViewPager			|
| me.relex.circleindicator.CircleIndicator2	| RecyclerView			|
| me.relex.circleindicator.CircleIndicator3	| ViewPager2  *(AndroidX)*	|




##### ViewPager (CircleIndicator)


```java
ViewPager viewpager = (ViewPager) view.findViewById(R.id.viewpager);
viewpager.setAdapter(adapter);

CircleIndicator indicator = (CircleIndicator) view.findViewById(R.id.indicator);
indicator.setViewPager(viewpager);

// optional
adapter.registerDataSetObserver(indicator.getDataSetObserver());
```


##### RecyclerView (CircleIndicator2)


```java
RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);

PagerSnapHelper pagerSnapHelper = new PagerSnapHelper();
pagerSnapHelper.attachToRecyclerView(recyclerView);

CircleIndicator2 indicator = view.findViewById(R.id.indicator);
indicator.attachToRecyclerView(recyclerView, pagerSnapHelper);

// optional
adapter.registerAdapterDataObserver(indicator.getAdapterDataObserver());
```


##### ViewPager2 (CircleIndicator3)

```java
ViewPager2 viewpager = view.findViewById(R.id.viewpager);
viewpager.setAdapter(mAdapter);

CircleIndicator3 indicator = view.findViewById(R.id.indicator);
indicator.setViewPager(viewpager);

// optional
adapter.registerAdapterDataObserver(indicator.getAdapterDataObserver());
```

##### Manual control
```java
CircleIndicator indicator = view.findViewById(R.id.indicator);
indicator.createIndicators(5,0);

indicator.animatePageSelected(2)
```



XML Properties
--------

```xml
<me.relex.circleindicator.CircleIndicator
	android:id="@+id/indicator"
	android:layout_width="match_parent"
	android:layout_height="48dp"/>
```

| Properties			| Default Value			|
| ----------------------------- | ----------------------------- |
| app:ci_width	 		| 5dp				|
| app:ci_height			| 5dp				|
| app:ci_margin			| 5dp				|
| app:ci_drawable		| R.drawable.white_radius  	|
| app:ci_drawable_unselected	| R.drawable.white_radius	|
| app:ci_animator		| R.animator.scale_with_alpha	|
| app:ci_animator_reverse	| 0				|
| app:ci_orientation		| horizontal			|
| app:ci_gravity		| center     			|

Could not find android.arch.navigation:navigation-safe-args-gradle-plugin:2.3.5.?

copy iconCopydownload iconDownload
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$version_navigation"
// Navigation
implementation "androidx.navigation:navigation-fragment-ktx:$version_navigation"
implementation "androidx.navigation:navigation-ui-ktx:$version_navigation"
-----------------------
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$version_navigation"
// Navigation
implementation "androidx.navigation:navigation-fragment-ktx:$version_navigation"
implementation "androidx.navigation:navigation-ui-ktx:$version_navigation"

Supertypes of the following classes cannot be resolved. on BaseQuickAdapter from BRVAH

copy iconCopydownload iconDownload
repositories {

google()  

jcenter()

maven { url "https://jitpack.io" }
    
}

The Android keyboard is changing the components of ConstraintLayout

copy iconCopydownload iconDownload
 <activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustPan"/>
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  
  <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <!-- xml code-->
 </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>
-----------------------
 <activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustPan"/>
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  
  <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <!-- xml code-->
 </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>
-----------------------
 <activity
    android:name=".YourActivity"
    android:windowSoftInputMode="adjustPan"/>
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  
  <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <!-- xml code-->
 </androidx.constraintlayout.widget.ConstraintLayout>

</ScrollView>

Unresolved reference: Parcelize after adding necessary tools in gradle and updating to kotlin latest version

copy iconCopydownload iconDownload
implementation "org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.61"
-----------------------
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
androidExtensions {
    experimental = true
}
-----------------------
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
androidExtensions {
    experimental = true
}

ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not download twitter.aar (com.twitter.sdk.android:twitter:3.1.0)

copy iconCopydownload iconDownload
repositories {
  jcenter()
}

onClick for images in ViewPager

copy iconCopydownload iconDownload
@Override
public Object instantiateItem(View collection, final int pos) { //have to make final so we can see it inside of onClick()
    LayoutInflater inflater = (LayoutInflater) collection.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


    View page = inflater.inflate(R.layout.YOUR_PAGE, null);

    page.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            //this will log the page number that was click
            Log.i("TAG", "This page was clicked: " + pos);
        }
    });


    ((ViewPager) collection).addView(page, 0);
    return page;
}
-----------------------
public class MyAdapter extends PagerAdapter {

private ArrayList<Integer> images;
private LayoutInflater inflater;
private Context context;
MyClassImage myClassImage;

public interface MyClassImage{
    void imageClick(String id);

}

public ViewPagerAdapter(Context context, ArrayList<Integer> images,MyClassImage myClassImage) {
    this.context = context;
    this.images=images;
    this.myClassImage=myClassImage;

    inflater = LayoutInflater.from(context);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);
}

@Override
public int getCount() {
    return images.size();
}

@Override
public Object instantiateItem(ViewGroup view, int position) {
    View myImageLayout = inflater.inflate(R.layout.z_slide_pager_item, view, false);
    ImageView myImage = (ImageView) myImageLayout.findViewById(R.id.image);
    myImage.setImageResource(images.get(position));
    view.addView(myImageLayout, 0);
    final int id=images.get(position);
    final String imgId=String.valueOf(id);


    myImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myClassImage.imageClick(imgId);
        }
    });
    return myImageLayout;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view.equals(object);
}
}
 public class MainActivity extends AppCompatActivity implements MyAdapter.MyClassImage {
public static final String MAIN = "OTHER";
private static ViewPager mPager;
private static int currentPage = 0;
private static final Integer[] XMEN= {R.drawable.benz2, R.drawable.benz2, R.drawable.benz2};
private ArrayList<Integer> XMENArray = new ArrayList<Integer>();
@Override
protected void onCreate(...);
init();
}
    private void init() {
    for(int i=0;i<XMEN.length;i++)
        XMENArray.add(XMEN[i]);

    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(new com.example.nepali_test.MyAdapter(MainActivity.this,XMENArray,this));
    CircleIndicator indicator = (CircleIndicator) findViewById(R.id.indicator);
    indicator.setViewPager(mPager);
    final Handler handler = new Handler();
    final Runnable Update = new Runnable() {
        public void run() {
            if (currentPage == XMEN.length) {
                currentPage = 0;
            }
            mPager.setCurrentItem(currentPage++, true);
        }
    };
    Timer swipeTimer = new Timer();
    swipeTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(Update);
        }
    }, 3000, 3000);
}

@Override
public void imageClick(String id) {

    Toast.makeText(this, "page "+id, Toast.LENGTH_SHORT).show();
}
-----------------------
public class MyAdapter extends PagerAdapter {

private ArrayList<Integer> images;
private LayoutInflater inflater;
private Context context;
MyClassImage myClassImage;

public interface MyClassImage{
    void imageClick(String id);

}

public ViewPagerAdapter(Context context, ArrayList<Integer> images,MyClassImage myClassImage) {
    this.context = context;
    this.images=images;
    this.myClassImage=myClassImage;

    inflater = LayoutInflater.from(context);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View) object);
}

@Override
public int getCount() {
    return images.size();
}

@Override
public Object instantiateItem(ViewGroup view, int position) {
    View myImageLayout = inflater.inflate(R.layout.z_slide_pager_item, view, false);
    ImageView myImage = (ImageView) myImageLayout.findViewById(R.id.image);
    myImage.setImageResource(images.get(position));
    view.addView(myImageLayout, 0);
    final int id=images.get(position);
    final String imgId=String.valueOf(id);


    myImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            myClassImage.imageClick(imgId);
        }
    });
    return myImageLayout;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view.equals(object);
}
}
 public class MainActivity extends AppCompatActivity implements MyAdapter.MyClassImage {
public static final String MAIN = "OTHER";
private static ViewPager mPager;
private static int currentPage = 0;
private static final Integer[] XMEN= {R.drawable.benz2, R.drawable.benz2, R.drawable.benz2};
private ArrayList<Integer> XMENArray = new ArrayList<Integer>();
@Override
protected void onCreate(...);
init();
}
    private void init() {
    for(int i=0;i<XMEN.length;i++)
        XMENArray.add(XMEN[i]);

    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(new com.example.nepali_test.MyAdapter(MainActivity.this,XMENArray,this));
    CircleIndicator indicator = (CircleIndicator) findViewById(R.id.indicator);
    indicator.setViewPager(mPager);
    final Handler handler = new Handler();
    final Runnable Update = new Runnable() {
        public void run() {
            if (currentPage == XMEN.length) {
                currentPage = 0;
            }
            mPager.setCurrentItem(currentPage++, true);
        }
    };
    Timer swipeTimer = new Timer();
    swipeTimer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(Update);
        }
    }, 3000, 3000);
}

@Override
public void imageClick(String id) {

    Toast.makeText(this, "page "+id, Toast.LENGTH_SHORT).show();
}
-----------------------
@NonNull
@Override
public Object instantiateItem(@NonNull final ViewGroup view, final int position) {
    View myImageLayout = inflater.inflate(R.layout.slide, view, false);
    ImageView myImage = (ImageView) myImageLayout
            .findViewById(R.id.image);
    myImage.setImageResource(images.get(position));
    myImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context.getApplicationContext(), "page "+position, Toast.LENGTH_SHORT).show();
        }
    });
    view.addView(myImageLayout, 0);
    return myImageLayout;
}

Community Discussions

Trending Discussions on CircleIndicator
  • Firebase crashlytics not able to read crash reports
  • A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction?java.lang.reflect.Invocation?
  • Cannot create Apk from Build&gt;&gt;Build Bundle(s) /APK(s)&gt;&gt;Build Apk(s) after Migrating project to Android X
  • Could not find com.huawei.hms:hwid:5.3.0.301 &amp; push kit when adding HMS alongside GMS using HMS Toolkit
  • Could not find android.arch.navigation:navigation-safe-args-gradle-plugin:2.3.5.?
  • Supertypes of the following classes cannot be resolved. on BaseQuickAdapter from BRVAH
  • The Android keyboard is changing the components of ConstraintLayout
  • Activity does not scroll smoothly when resume multiple times
  • Unresolved reference: Parcelize after adding necessary tools in gradle and updating to kotlin latest version
  • ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not download twitter.aar (com.twitter.sdk.android:twitter:3.1.0)
Trending Discussions on CircleIndicator

QUESTION

Firebase crashlytics not able to read crash reports

Asked 2022-Apr-11 at 14:08

I have configured crashlytics as per Firebase Documentation https://firebase.google.com/docs/crashlytics/get-started?platform=android. But crash reports not generated and uploaded to server.

server

Kindly refer my build details.

Here is our project-level build.gradle

buildscript {
    
    repositories {
        google()
        jcenter()

        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
        classpath 'com.google.gms:google-services:4.3.10'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'

    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io'}
        maven{ url 'https://maven.google.com/' }
        mavenCentral()

        flatDir {
            dirs 'libs'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(:app)

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'

android {

    compileSdkVersion 28
    defaultConfig {
        applicationId "com.XXX.XXX"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 375
        versionName "2.25.1"

        multiDexEnabled true
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
        dataBinding {
            enabled = true
        }
        signingConfig signingConfigs.config
    }

    android {
        lintOptions {
            checkReleaseBuilds false
            abortOnError false
        }
    }

    flavorDimensions "appVariant", "projectCode"
    productFlavors {
        A {
            applicationId 'com.XXX.A'
            dimension "appVariant"
        }
        B {
            applicationId 'com.XXX.B'
            dimension "appVariant"
        }
        C {
            applicationId 'com.XXX.C'
            dimension "appVariant"
        }
        D {
            applicationId 'com.XXX.D'
            dimension "appVariant"
        }
        DEV {
            dimension "projectCode"
        }
        QA {
            dimension "projectCode"
        }
        LIVE {
            dimension "projectCode"
        }
        DEMO {
            dimension "projectCode"
        }
        BETA {
            dimension "projectCode"
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def project = "XXX"
            def SEP = "_"
            def flavor = variant.productFlavors[0].name
            def projcode = variant.productFlavors[1].name
            def buildType = variant.buildType.name
            def buildTypeName = "";
            switch (buildType) {
                case "ABC": buildTypeName = SEP + "AB"; break;
                case "XYZ": buildTypeName = SEP + "XY"; break;
                default:
                    buildTypeName = "";
            }

            def version = variant.versionName
            def newApkName = project + buildTypeName + SEP + flavor + SEP + projcode + SEP + version + ".apk"

            outputFileName = new File(newApkName)
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {
        debug {

            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            buildConfigField "String", "AREA", "\"\""
        }
        
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            buildConfigField "String", "AREA", "\"\""
        }
        ABC {
            signingConfig signingConfigs.config
            minifyEnabled false
            buildConfigField "String", "AREA", "\"_A\""
        }
        XYZ {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
            buildConfigField "String", "AREA", "\"_X\""
        }
    }
    
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
}

repositories {

    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }

}

dependencies {
    def room_version = "1.1.1"
    def lifecycle_version = "1.1.1"
    def work_version = "1.0.0-beta01"
    implementation files('libs/commons-net-3.3.jar')
    implementation files('libs/httpclient-4.3.4.jar')
    implementation files('libs/httpcore-4.3.2.jar')
    implementation files('libs/httpmime-4.3.4.jar')
    implementation files('libs/silipmlib.jar')
    implementation files('libs/HyperLogLib8.jar')
    
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.3.0')
    
    implementation 'com.google.firebase:firebase-crashlytics'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging'

    //dependency for Workmanager
    implementation 'androidx.work:work-runtime:2.0.1'

    //dependencies for Room database
    implementation 'androidx.room:room-runtime:2.0.0'
    //noinspection GradleCompatible
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    annotationProcessor 'androidx.room:room-compiler:2.0.0'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    //dependency for custom progress dialog

    //dependency for retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

    //dependency for joda time for date time calculation
    implementation 'joda-time:joda-time:2.10'

    //dependency for glide
    implementation 'com.github.bumptech.glide:glide:3.7.0'

    //dependency for custom toast
    implementation 'com.valdesekamdem.library:md-toast:0.9.0'

    //dependency for marshmallow permission - dexter library
    implementation 'com.karumi:dexter:4.2.0'

    // ViewModel and LiveData
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
    annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.0.0'

    // alternately - if using Java8, use the following instead of compiler
    implementation 'androidx.lifecycle:lifecycle-common-java8:2.0.0'

    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
    implementation project(':floatingmenu')
    implementation project(':html2bitmap')
    debugImplementation 'com.amitshekhar.android:debug-db:1.0.4'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
    implementation 'com.github.vipulasri:timelineview:1.0.6'
    implementation 'me.relex:circleindicator:1.2.2@aar'
    implementation 'com.haozhang.libary:android-slanted-textview:1.2'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'

    // implementation 'com.google.android.gms:play-services-gcm:11.8.0'

    // implementation 'com.google.android.gms:play-services-ads:11.8.0'
    implementation('com.github.florent37:materialviewpager:1.2.3') {
        exclude group: 'com.android.support'
    }

    implementation 'com.orhanobut:dialogplus:1.11@aar'

    //  implementation 'me.dm7.barcodescanner:zbar:1.8.4'
    implementation 'me.dm7.barcodescanner:zxing:1.9'
    implementation 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
    implementation 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
    implementation 'com.journeyapps:zxing-android-integration:2.3.0@aar'
    implementation 'com.google.zxing:core:3.2.0'
    implementation 'net.cachapa.expandablelayout:expandablelayout:2.9.2'
    implementation 'com.github.siyamed:android-shape-imageview:0.9.+@aar'
    implementation files('libs/HyperLogLib8.jar')
    implementation project(':scandecode-release')
    implementation 'com.tt:whorlviewlibrary:1.0.3'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.1.6'
    implementation 'com.jakewharton.rxbinding:rxbinding:0.4.0'
    implementation 'com.jakewharton.rxbinding:rxbinding-design:0.4.0'

    implementation 'org.apache.commons:commons-text:1.7'

    // these are for retrolambda and streams api
    implementation 'com.annimon:stream:1.1.2'

}

With initialisation:

FirebaseApp.initializeApp(this)
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)

And manifest:

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="true" />

Here is the logcat for the Crashlytics/CrashTest crash:

2022-04-10 15:53:07.717 21310-21310/com.XXX.XXX E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.XXX.XXX, PID: 21310
    java.lang.RuntimeException: Test Crash
        at com.XXX.XXX.UI.HomeActivity$1.onClick(HomeActivity.java:345)
        at android.view.View.performClick(View.java:6392)
        at android.view.View$PerformClick.run(View.java:25133)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:198)
        at android.app.ActivityThread.main(ActivityThread.java:7055)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:523)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:836)

This is the log that we receive when app relaunched after crash.

D:\user\Android Projects\XXX>adb logcat -s FirebaseCrashlytics
--------- beginning of main
--------- beginning of system
--------- beginning of crash
04-10 15:54:56.911 22018 22018 I FirebaseCrashlytics: Initializing Firebase Crashlytics 18.2.9 for com.XXX.XXX
04-10 15:54:56.926 22018 22018 D FirebaseCrashlytics: Crashlytics automatic data collection ENABLED by API.
04-10 15:54:56.940 22018 22018 D FirebaseCrashlytics: AnalyticsConnector now available.
04-10 15:54:56.943 22018 22018 D FirebaseCrashlytics: Registered Firebase Analytics listener.
04-10 15:54:56.948 22018 22018 D FirebaseCrashlytics: Mapping file ID is: 00000000000000000000000000000000
04-10 15:54:56.958 22018 22018 D FirebaseCrashlytics: Checking for cached settings...
04-10 15:54:56.992 22018 22018 D FirebaseCrashlytics: Loaded cached settings: {"settings_version":3,"cache_duration":86400,"features":{"collect_logged_exceptions":true,"collect_reports":
true,"collect_analytics":false,"prompt_enabled":false,"push_enabled":false,"firebase_crashlytics_enabled":false,"collect_anrs":true,"collect_metric_kit":false},"app":{"status":"activated
","update_required":false,"report_upload_variant":2,"native_report_upload_variant":2},"fabric":{"org_id":"62513aa60277ea5e0396d4ef","bundle_id":"com.XXX.XXX"},"on_demand_
upload_rate_per_minute":10,"on_demand_backoff_base":1.2,"on_demand_backoff_step_duration_seconds":60,"expires_at":1649666891559}
04-10 15:54:56.996 22018 22018 D FirebaseCrashlytics: Crashlytics automatic data collection ENABLED by API.
04-10 15:54:57.113 22018 22018 D FirebaseCrashlytics: Successfully configured exception handler.
04-10 15:54:57.116 22018 22049 D FirebaseCrashlytics: Opening a new session with ID 6252B07803E20001560228F94565CB5E
04-10 15:54:57.183 22018 22049 D FirebaseCrashlytics: Registered Firebase Analytics event receiver for breadcrumbs
04-10 15:54:58.013 22018 22018 D FirebaseCrashlytics: Crashlytics automatic data collection ENABLED by API.
04-10 15:54:58.642 22018 22018 D FirebaseCrashlytics: Crashlytics automatic data collection ENABLED by API.

These are set to false in cached settings:

"collect_analytics":false,
"firebase_crashlytics_enabled":false,

This setting was weird. Both of them are false for some reason though I never did turn them off explicitly. Never even played with these settings.

Not sure what is wrong. Any help will be appreciated.

ANSWER

Answered 2022-Apr-11 at 14:08

Solved!..
There was another utility logger library initialized in the application class that prevented crashlytics from collecting log. https://github.com/hypertrack/hyperlog-android

Also the initialization & manifest part is not necessary unless you want to explicitly enable/disable crashlytics working.

Source https://stackoverflow.com/questions/71815836

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install CircleIndicator

You can download it from GitHub, Maven.
You can use CircleIndicator like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the CircleIndicator component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

Support

For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Explore Related Topics

Share this Page

share link
Consider Popular Runtime Evironment Libraries
Compare Runtime Evironment Libraries with Highest Support
Compare Runtime Evironment Libraries with Highest Quality
Compare Runtime Evironment Libraries with Highest Security
Compare Runtime Evironment Libraries with Permissive License
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.