将ViewPagerIndicator添加到Android Studio

我试图让Jake Wharton的ViewPagerIndicator与Android Studio合作,但不幸的是它无法正常工作。
我从这里下载了.aar文件并将其包含在我的libs文件夹中。
我像这样引用它:

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

Android Studio给出了以下错误:

 Error:duplicate files during packaging of APK 

我不熟悉gradle,当它给我这个错误时不知道该怎么办。
你能帮帮我一下吗?

这是我的完整build.gradle:

 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') } 

UPDATE

根据Jürgen’Kashban’Wahlmann给出的答案 ,现在可以通过gradle添加ViewPagerIndicator:

顶级Build.gradle:

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

App的build.gradle:

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

此外,根据Enrico Susatyo给出的答案,现在似乎可以从Jitpack maven存储库下载库。 做到如下:

在root build.grade中:

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

在项目build.grade中:

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

————

要在Android Studio中使用Android-ViewPagerIndicator,您无法从gradle下载它。 相反,您必须将库作为“现有项目”导入到当前项目中。

按着这些次序:

#1从GitHub下载源代码 。

#2在Android Studio项目中:文件 – >项目结构 – >添加(+符号) – >导入现有项目。 只导入名为“library”的文件夹,而不是整个项目(保留Android Studio建议的导入选项)。

#3如果build.gradle中指定的“compileSdkVersion”与Android-ViewPagerIndicator项目中指定的“compileSdkVersion”不匹配,请更改第二个。 这同样适用于任何其他属性,例如“minSdkVersion”甚至是当前的支持库。

#4将Android-ViewPagerIndicator项目添加为build.gradle模块的依赖项:

 dependencies { compile project(':library') } 

#5使用gradle文件同步项目。

它可以像Gradle一样导入:

顶级Build.gradle:

 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() } } 

在App的build.gradle中,将其添加到依赖项部分:

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

(添加@aar以避免“不支持apklib包装错误”)

对我来说很好。

截至今天(2016年3月),Jitpack的maven repos为我工作: https ://jitpack.io/#JakeWharton/ViewPagerIndicator/2.4.1/aar

在root build.gradle

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

在项目build.gradle

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

你可以在没有任何第三方库的情况下完成

最后结果:

在此处输入图像描述

1)使用框架布局作为Viewpager的容器,然后在其底部添加Linearlayout。

        

2)定义指标的大小和余量

  //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)在线性布局中添加指标

  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)将指示器初始化为0位置

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

5)查看寻呼机页面更改的更新指示器

 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); } } 

最后但并非最不重要的是为指标添加这2个drawable

indicator_unselected.xml

     

indicator_selected.xml