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')
}
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.
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'
}
Vous pouvez le faire sans aucune bibliothèque tierce
Résultat final:
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>
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'
}