web-dev-qa-db-fra.com

Ajouter ViewPagerIndicator à Android Studio

j'essaie de faire en sorte que ViewPagerIndicator de Jake Wharton fonctionne avec Android Studio, mais malheureusement, cela ne fonctionnera pas. 
J'ai téléchargé le fichier .aar depuis ici et l’a inclus dans mon dossier libs. 
Je l'ai référencé comme ceci: 

compile files('src/main/libs/viewpagerindicator_2.4.1.aar')

Android Studio me donne l'erreur suivante:

Error:duplicate files during packaging of APK

Je ne connais pas très bien Gradle et je ne sais pas quoi faire quand cela me donne cette erreur. 
Pouvez-vous m'aider s'il vous plaît avec celui-ci? 

Voici mon build.gradle complet: 

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "de.xxx"
        minSdkVersion 15
        targetSdkVersion 19
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }

    buildTypes {
     release {
     runProguard false
     proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
    }
    }
}

dependencies {
    compile 'com.Android.support:support-v4:20.0.0'
    compile 'com.github.amlcurran.showcaseview:library:5.0.0'
    compile files('src/main/libs/PdfViewer.jar')
    compile files('src/main/libs/viewpagerindicator_2.4.1.aar')
}
28
carstenbaumhoegger

METTRE À JOUR

Basé sur le réponse donnée par Jürgen 'Kashban' Wahlmann , il est maintenant possible d'ajouter ViewPagerIndicator via gradle:

Niveau supérieur de construction:

buildscript {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
}

allprojects {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
}

Build.gradle de l'application:

compile 'com.viewpagerindicator:library:2.4.1@aar'

En outre, sur la base de la réponse donnée par Enrico Susatyo , il semble maintenant possible de télécharger la bibliothèque à partir des référentiels Maven de Jitpack. Faites-le comme suit:

Dans la racine build.grade:

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

Dans le projet build.grade:

dependencies {
            compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    }

------------

Pour utiliser Android-ViewPagerIndicator dans Android Studio, vous ne pouvez pas le télécharger à partir de Gradle. Au lieu de cela, vous devez importer la bibliothèque en tant que «projet existant» dans votre projet actuel. 

Suivez ces étapes:

# 1 Téléchargez code source } à partir de GitHub. 

# 2 Dans votre projet Android Studio: Fichier -> Structure du projet -> Ajouter (+ symbole) -> Importer un projet existant. Importez uniquement le dossier appelé "bibliothèque", pas le projet entier (laissez les options d'importation proposées par Android Studio). 

# 3 Si la "compileSdkVersion" spécifiée dans votre build.gradle ne correspond pas à celle spécifiée dans le projet Android-ViewPagerIndicator, modifiez la seconde. La même chose s'applique avec toute autre propriété, telle que "minSdkVersion" ou même la bibliothèque de support actuelle. 

# 4 Ajoutez le projet Android-ViewPagerIndicator en tant que dépendance à votre module build.gradle:

dependencies {
    compile project(':library')
}

# 5 Synchroniser le projet avec des fichiers Gradle.

73
Víctor Albertos

Il peut être importé par Gradle comme ceci: 

Niveau supérieur de construction: 

buildscript {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:0.12.+'
    }
}

allprojects {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
    }
}

Dans le build.gradle de votre application, ajoutez ceci à la section des dépendances:

compile 'com.viewpagerindicator:library:2.4.1@aar'

(Ajoutez @aar pour éviter "l'erreur de packaging pour apklib n'est pas supportée")

Fonctionne bien pour moi.

À compter d'aujourd'hui (mars 2016), le maven repos de Jitpack me convient: https://jitpack.io/#JakeWharton/ViewPagerIndicator/2.4.1/aar

En racine build.gradle:

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

Dans le projet build.gradle:

dependencies {
            compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    }
42
Enrico Susatyo

Vous pouvez le faire sans aucune bibliothèque tierce

Résultat final:

 enter image description here

1) Utilisez la disposition du cadre comme conteneur pour Viewpager, puis ajoutez une représentation linéaire au bas de celle-ci.

<FrameLayout
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                Android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax">

                <Android.support.v4.view.ViewPager
                    Android:id="@+id/product_images_pager"
                    Android:layout_width="match_parent"
                    Android:layout_height="match_parent" />

                <HorizontalScrollView
                    Android:layout_width="match_parent"
                    Android:layout_height="20dp"
                    Android:layout_gravity="bottom|center_horizontal"
                    Android:layout_margin="10dp">

                    <LinearLayout
                        Android:id="@+id/indicator_root"
                        Android:layout_width="20dp"
                        Android:layout_height="match_parent"
                        Android:layout_gravity="bottom|center_horizontal"
                        Android:gravity="center_horizontal"
                        Android:orientation="horizontal">

                    </LinearLayout>
                </HorizontalScrollView>

            </FrameLayout>

2) Définir la taille et la marge pour les indicateurs

  //define globaly 
   private LinearLayout.LayoutParams imageParam;

   //init params
      int margin = Utils.pxFromDp(getActivity(), 5);
        int width = Utils.pxFromDp(getActivity(), 8);
        imageParam = new LinearLayout.LayoutParams(width, width);
        imageParam.setMargins(margin, margin, margin, margin);

3) Ajouter des indicateurs dans la disposition linéaire

 for (int indicatorCount = 0; indicatorCount < productFromShoppingList.getProductImages().size();
             indicatorCount++) {

            ImageView imageIndicator =
                    new ImageView(getActivity());

            imageIndicator.setAdjustViewBounds(true);
            imageIndicator.setScaleType(ImageView.ScaleType.FIT_XY);
            imageIndicator.setLayoutParams(imageParam);

            indicatorContainer.addView(imageIndicator);
            indicators.add(imageIndicator);
            imageIndicator.setBackgroundResource(R.drawable.indicator_unselected);
        }

4) initialiser l'indicateur à la position 0

 indicators.get(0).setBackgroundResource(R.drawable.indicator_unselected);

5) Indicateur de mise à jour sur le changement de page du pager de vue

carousalViewPager.setAdapter(new slidingPagerAdapter(getActivity(),
            productFromShoppingList.getProductImages()));

    carousalViewPager
            .addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position,
                                           float positionOffset, int positionOffsetPixels) {

                }

                @Override
                public void onPageSelected(int position) {

                    currentPageIndex = position;
                    updateIndicators(currentPageIndex);
                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });


private void updateIndicators(int selectedPostion) {
    for (int indicatorPosition = 0; indicatorPosition < indicators.size(); indicatorPosition++) {
        indicators.get(indicatorPosition).setBackgroundResource(indicatorPosition == selectedPostion ? R.drawable.indicator_selected
                : R.drawable.indicator_unselected);
    }
}

Dernier mais non le moindre ajouter ces 2 dessinable pour indicateur

indicateur_unselected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <stroke
        Android:width="1dp"
        Android:color="@color/white" />
</shape>

indicateur_sélectionné.xml

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <corners Android:radius="100dp" />
    <solid Android:color="@Android:color/white" />
</shape>
0
Hitesh Sahu

Pour moi, essayer de l'intégrer à partir de Maven n'a pas fonctionné. Je vais toujours les exceptions de construction suivantes et les styles ne peuvent pas être modifiés:

aucune ressource trouvée qui correspond au nom donné vpiCirclePageIndicatorStyle vpiTitlePageIndicatorStyle

Ajouter la dépendance via jitpack est parfait:

En racine build.gradle:

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

Dans le projet build.gradle:

dependencies {
            compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    }
0
cV2