jake WhartonのViewPagerIndicatorをAndroid Studioで動作させようとしていますが、残念ながら動作しません。
。aarファイルを here からダウンロードし、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()
}
}
アプリのbuild.gradle:
compile 'com.viewpagerindicator:library:2.4.1@aar'
また、 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-ViewPagerIndicatorをAndroid Studioで使用するには、gradleからダウンロードできません。代わりに、現在のライブラリに「既存のプロジェクト」としてライブラリをインポートする必要があります。
次の手順を実行します:
#1 ソースコード GitHubからダウンロードします。
#2 Android Studio Project:File-> Project Structure-> add(+ symbol)-> Import Existing Project。プロジェクト全体ではなく、 "library"というフォルダーのみをインポートします(leave Android Studioが提案する)としてのインポートオプション。
#3 build.gradleで指定された「compileSdkVersion」がAndroid-ViewPagerIndicatorプロジェクトで指定された「compileSdkVersion」と一致しない場合は、2番目のものを変更します。 「minSdkVersion」や現在のサポートライブラリなど、他のプロパティにも同じことが当てはまります。
#4 build.gradleモジュールへの依存関係としてAndroid-ViewPagerIndicatorプロジェクトを追加します。
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()
}
}
アプリのbuild.gradleで、これを依存関係セクションに追加します。
compile 'com.viewpagerindicator:library:2.4.1@aar'
(@aprを追加して、「apklibのパッケージはサポートされていません」というエラーを回避します)
私にとってはうまくいきます。
今日(2016年3月)、JitpackのMavenリポジトリは私のために動作します: 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'
}
サードパーティのライブラリなしでそれを行うことができます
最終結果:
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つのドロウアブルを追加します
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>
Mavenから統合しようとしてもうまくいきませんでした。私は常に次のビルド例外に行き、スタイルを再設定できませんでした:
指定された名前vpiCirclePageIndicatorStyle vpiTitlePageIndicatorStyleに一致するリソースが見つかりません
Jitpackを介して依存関係を追加することは完璧に機能します。
ルートでbuild.gradle
:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
プロジェクト内build.gradle
:
dependencies {
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
}