将ViewPagerIndicator添加到Android Studio

时间:2014-09-06 17:25:18

标签: android gradle android-studio viewpagerindicator

我试图让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')
}

5 个答案:

答案 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)

您可以在没有任何第三方库的情况下执行此操作

最终结果:

enter image description here

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