Skip to content

Commit 08454f5

Browse files
committed
convert pluto to kotlin
1 parent ac675eb commit 08454f5

34 files changed

+1322
-1425
lines changed

app/build.gradle

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
apply plugin: 'com.android.application'
2+
apply plugin: 'kotlin-android-extensions'
3+
apply plugin: 'kotlin-android'
24

35
android {
46
compileOptions {
@@ -16,7 +18,9 @@ android {
1618
}
1719
buildTypes {
1820
release {
19-
minifyEnabled false
21+
debuggable false
22+
minifyEnabled true
23+
shrinkResources true
2024
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2125
}
2226
}
@@ -34,4 +38,8 @@ dependencies {
3438
testImplementation 'junit:junit:4.12'
3539
androidTestImplementation 'com.android.support.test:runner:1.0.2'
3640
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
41+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
42+
}
43+
repositories {
44+
mavenCentral()
3745
}

app/src/main/java/com/opensooq/plutodemo/CustomIndicatorActivity.java

Lines changed: 0 additions & 37 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.opensooq.plutodemo
2+
3+
import android.os.Bundle
4+
import android.support.v7.app.AppCompatActivity
5+
import com.opensooq.pluto.PlutoView
6+
import com.opensooq.pluto.listeners.OnItemClickListener
7+
8+
class CustomIndicatorActivity : AppCompatActivity() {
9+
10+
11+
private fun getGifs(): MutableList<Gif> {
12+
val items = mutableListOf<Gif>()
13+
items.add(Gif("https://i.giphy.com/media/Q8auEgoR7x0CcgH4uQ/giphy.gif"))
14+
items.add(Gif("https://i.giphy.com/media/8nmb8m82jbLfa/giphy.gif"))
15+
items.add(Gif("https://i.giphy.com/media/61XRgiopTwXYda9sTX/giphy.gif"))
16+
items.add(Gif("https://i.giphy.com/media/AiEr9b7sX5VKIoIvQL/giphy.gif"))
17+
18+
return items
19+
}
20+
21+
override fun onCreate(savedInstanceState: Bundle?) {
22+
super.onCreate(savedInstanceState)
23+
setContentView(R.layout.activity_custom_indicator)
24+
25+
val pluto = findViewById<PlutoView>(R.id.slider_view)
26+
val adapter = InfinityGauntletAdapter(getGifs(), object : OnItemClickListener<Gif> {
27+
override fun onItemClicked(item: Gif?, position: Int) {
28+
}
29+
30+
})
31+
pluto.create(adapter, 4000, lifecycle)
32+
pluto.setCustomIndicator(findViewById(R.id.infinity_gauntlet_indicator))
33+
34+
}
35+
}

app/src/main/java/com/opensooq/plutodemo/Gif.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.opensooq.plutodemo
2+
3+
class Gif(val url: String)

app/src/main/java/com/opensooq/plutodemo/InfinityGauntletAdapter.java

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.opensooq.plutodemo
2+
3+
import android.view.ViewGroup
4+
import android.widget.ImageView
5+
6+
import com.bumptech.glide.Glide
7+
import com.opensooq.pluto.base.PlutoAdapter
8+
import com.opensooq.pluto.base.PlutoViewHolder
9+
import com.opensooq.pluto.listeners.OnItemClickListener
10+
11+
class InfinityGauntletAdapter(items: MutableList<Gif>,
12+
onItemClickListener: OnItemClickListener<Gif>) : PlutoAdapter<Gif, InfinityGauntletAdapter.ViewHolder>(items, onItemClickListener) {
13+
14+
override fun getViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
15+
return ViewHolder(parent, R.layout.item_infinit_gauntlet)
16+
}
17+
18+
class ViewHolder(parent: ViewGroup, itemLayoutId: Int) : PlutoViewHolder<Gif>(parent, itemLayoutId) {
19+
internal var ivPoster: ImageView = getView(R.id.iv_gif)
20+
21+
override fun set(item: Gif, pos: Int) {
22+
Glide.with(context).asGif().load(item.url).into(ivPoster)
23+
24+
}
25+
}
26+
}

app/src/main/java/com/opensooq/plutodemo/MainActivity.java

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.opensooq.plutodemo
2+
3+
import android.content.Intent
4+
import android.os.Bundle
5+
import android.support.v7.app.AppCompatActivity
6+
import android.widget.LinearLayout
7+
8+
import com.opensooq.pluto.PlutoView
9+
import com.opensooq.pluto.base.PlutoAdapter
10+
import com.opensooq.pluto.listeners.OnItemClickListener
11+
import com.opensooq.pluto.listeners.OnSlideChangeListener
12+
13+
class MainActivity : AppCompatActivity() {
14+
15+
private fun getAvenger(): MutableList<Movie> {
16+
val items = mutableListOf<Movie>()
17+
items.add(Movie("7.1", R.drawable.ic_captain_marvel))
18+
items.add(Movie("9.2", R.drawable.ic_end_game))
19+
items.add(Movie("7.5", R.drawable.ic_dr_strange))
20+
items.add(Movie("7.9", R.drawable.ic_iron_man))
21+
return items
22+
}
23+
24+
override fun onCreate(savedInstanceState: Bundle?) {
25+
super.onCreate(savedInstanceState)
26+
setContentView(R.layout.activity_main)
27+
val pluto = findViewById<PlutoView>(R.id.slider_view)
28+
val adapter = SliderAdapter(getAvenger(), object : OnItemClickListener<Movie> {
29+
override fun onItemClicked(item: Movie?, position: Int) {
30+
}
31+
})
32+
33+
pluto.create(adapter, 4000, lifecycle)
34+
pluto.setOnSlideChangeListener(object : OnSlideChangeListener {
35+
override fun onSlideChange(adapter: PlutoAdapter<*, *>, position: Int) {
36+
37+
}
38+
})
39+
40+
val button = findViewById<LinearLayout>(R.id.indicator_example)
41+
button.setOnClickListener {
42+
startActivity(Intent(this, CustomIndicatorActivity::class.java))
43+
}
44+
45+
}
46+
}

app/src/main/java/com/opensooq/plutodemo/Movie.java

Lines changed: 0 additions & 22 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.opensooq.plutodemo
2+
3+
import android.support.annotation.DrawableRes
4+
5+
class Movie(val imdbRating: String, @field:DrawableRes
6+
val posterId: Int)

app/src/main/java/com/opensooq/plutodemo/SliderAdapter.java

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.opensooq.plutodemo
2+
3+
import android.view.ViewGroup
4+
import android.widget.ImageView
5+
import android.widget.TextView
6+
7+
import com.bumptech.glide.Glide
8+
import com.opensooq.pluto.base.PlutoAdapter
9+
import com.opensooq.pluto.base.PlutoViewHolder
10+
import com.opensooq.pluto.listeners.OnItemClickListener
11+
12+
class SliderAdapter(items: MutableList<Movie>, onItemClickListener: OnItemClickListener<Movie>) : PlutoAdapter<Movie, SliderAdapter.ViewHolder>(items, onItemClickListener) {
13+
14+
override fun getViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
15+
return ViewHolder(parent, R.layout.item_movie_promotion)
16+
}
17+
18+
class ViewHolder(parent: ViewGroup, itemLayoutId: Int) : PlutoViewHolder<Movie>(parent, itemLayoutId) {
19+
private var ivPoster: ImageView = getView(R.id.iv_poster)
20+
private var tvRating: TextView = getView(R.id.tv_rating)
21+
22+
override fun set(item: Movie, position: Int) {
23+
Glide.with(context).load(item.posterId).into(ivPoster)
24+
tvRating.text = item.imdbRating
25+
}
26+
}
27+
}

build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22

33
buildscript {
4+
ext.kotlin_version = '1.3.31'
45
repositories {
56
google()
67
jcenter()
@@ -10,7 +11,9 @@ buildscript {
1011
classpath 'com.android.tools.build:gradle:3.4.0'
1112
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
1213
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
13-
14+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
15+
16+
1417
// NOTE: Do not place your application dependencies here; they belong
1518
// in the individual module build.gradle files
1619
}

0 commit comments

Comments
 (0)