PhotoViewのインストール

# 目的
Kotlinで開発しているAndroidアプリのプロジェクトにGradleを使ってPhotoViewをインストールする。

## 環境

Android Studio で Kotlin を使ってアプリの開発をしている。

|項目|バージョン|
|---|---|
|Android Studio|v3.3|
|Gradle|v5.1|



## PhotoViewとは

PhotoViewは、ズーム可能なAndroidのImageViewを簡単に使用できるように実装することを目的としています。

> PhotoView aims to help produce an easily usable implementation of a zooming Android ImageView.

https://github.com/chrisbanes/PhotoView

## 手順

### 注意

**build.gradle はプロジェクト内に２つある。**

フォルダ構造で言うと以下の通り。
２つあるので間違ったファイルを触るとビルドが通らない。

```
├── app
│   └── build.gradle // module build.gradle
└── build.gradle // root build.gradle
```


### 1. jitpack を使えるようにする

ルートの `build.gradle` に `maven { url "https://jitpack.io" }` を追加する。
`allprojects` 内の `dependencies` 内に追加する。

```gradle:/build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.11'
    repositories {
        google()
        jcenter()
        // ここには追加しては行けない
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" } // ← ここに追加
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
```

### 2. 対象のライブラリを指定する

```gradle:/app/build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "****"
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:gridlayout-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.github.chrisbanes:PhotoView:2.0.0' // ← ここに追加
}
```

#### PhotoView について
PhotoViewのREAD.ME には以下の通りに書かれているが、`latest.release.here` の部分は [GithubのReleasesのページ](https://github.com/chrisbanes/PhotoView/releases) を確認して最新のバージョンを書き入れる。

```gradle
implementation 'com.github.chrisbanes:PhotoView:latest.release.here'
```

この記事を書いている時点では `2.0.0` が最新だったため以下のように書いた。

```gradle
implementation 'com.github.chrisbanes:PhotoView:2.0.0'
```

## 最後に

ファイルの違いがわかりやすいように gradleファイル内の全文を記事に書いた。