我试图让Jake Wharton的ViewPagerIndicator与Android Studio合作,但遗憾的是它无法正常工作。
我从here下载了.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')
}
答案 0 :(得分:73)
<强>更新强>
基于answer given by 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'
此外,基于answer given by 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下载source code。
#2在Android Studio项目中: 档案 - &gt;项目结构 - &gt;添加(+符号) - &gt;导入现有项目。只导入名为“library”的文件夹,而不是整个项目(保留导入选项,如Android Studio所示)。
#3如果build.gradle中指定的“compileSdkVersion”与Android-ViewPagerIndicator项目中指定的“compileSdkVersion”不匹配,请更改第二个。这同样适用于任何其他属性,例如“minSdkVersion”甚至是当前的支持库。
#4将Android-ViewPagerIndicator项目添加为build.gradle模块的依赖项:
dependencies {
compile project(':library')
}
#5使用gradle文件同步项目。
答案 1 :(得分:66)
它可以像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以避免&#34;不支持apklib包装错误&#34;)
对我来说很好。
答案 2 :(得分:43)
截至今日(2016年3月),Jitpack的maven repos为我工作:https://jitpack.io/#JakeWharton/ViewPagerIndicator/2.4.1/aar
在根build.gradle
中:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
在项目build.gradle
中:
dependencies {
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
}
答案 3 :(得分:0)
您可以在没有任何第三方库的情况下执行此操作
最终结果:
1)使用框架布局作为Viewpager的容器,然后在其底部添加一个Linearlayout。
<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)定义指标的大小和余量
//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 强>
<?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>
<强> indicator_selected.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>
答案 4 :(得分:0)
对我来说,尝试从Maven集成它并没有奏效。我总是遵循以下构建异常和样式:
没有找到与给定名称vpiCirclePageIndicatorStyle vpiTitlePageIndicatorStyle匹配的资源
通过jitpack添加依赖项非常完美:
在根build.gradle
中:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
在项目build.gradle
中:
dependencies {
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
}