2014-09-06 46 views
26

我試圖讓傑克沃頓的ViewPagerIndicator與Android Studio一起工作,但不幸的是它無法工作。
我從here下載了.aar文件,並將其包含在我的libs文件夾中。
我引用這樣的:
添加ViewPagerIndicator到Android Studio

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

Android的工作室給了我以下錯誤:

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

回答

72

UPDATE

基礎上answer given by Jürgen 'Kashban' Wahlmann,現在可以通過gradle這個添加ViewPagerIndicator:

頂級構建。 gradle:

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

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

應用的的build.gradle:

compile 'com.viewpagerindicator:library:[email protected]' 

此外,基於對answer given by Enrico Susatyo現在看來可以下載從Jitpack Maven倉庫的庫。做到這一點,如下所示:

在根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下載它。相反,您必須將庫作爲「現有項目」導入到當前項目中。

遵循以下步驟:

#從GitHub 1下載source code

#2在您的Android Studio項目中: 文件 - >項目結構 - >添加(+符號) - >導入現有項目。只導入名爲「library」的文件夾,而不是整個項目(按照Android Studio的建議保留導入選項)。

#3如果您的build.gradle中指定的「compileSdkVersion」與Android-ViewPagerIndicator項目中指定的不匹配,請更改第二個。這同樣適用於任何其他屬性,例如「minSdkVersion」或甚至當前的支持庫。

#4將Android-ViewPagerIndicator項目作爲依賴添加到您的構建中。gradle模塊:

dependencies { 
    compile project(':library') 
} 

#5與gradle文件同步項目。

+1

作品perfec TLY! 非常感謝你幫助我! :) – carstenbaumhoegger 2014-09-06 22:19:33

+0

我很高興我能幫助你! – 2014-09-06 22:24:52

+0

是的,它工作正常,其餘的答案不工作,或者不在新的android工作室。 +1謝謝 – 2014-10-16 21:00:42

66

它可以通過搖籃導入這樣的:

頂級的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() 
    } 
} 

在應用程序的的build.gradle添加到您的依賴關係部分:

compile 'com.viewpagerindicator:library:[email protected]' 

(添加@aar以避免「apklib包裝不支持錯誤」)

工作正常爲了我。

+2

偉大的工作!這個答案應該被標記爲「正確」。 – jimpanzer 2014-10-29 09:28:37

+0

是的,它比已經接受的答案要好。 – 2014-10-29 15:20:57

+0

你是一個救生員... – baboo 2015-02-02 11:55:22

41

截至今天(2016年3月),Jitpack的行家回購爲我工作: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

希望我能多點贊!謝謝! – 2016-03-22 22:36:25

+1

真的很有幫助。朋友請注意支持你的申請最低sdk應該11.(只是提示新鮮) – 2016-03-28 18:55:45

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)線性佈局

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

初始化指示器定義指標

//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)添加指示器大小和餘量5)在vi上更新指標EW尋呼機頁變化

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繪製的指標

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>