summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2021-02-20 16:43:50 +0100
committerClyhtsuriva <aimeric@adjutor.xyz>2021-02-20 16:43:50 +0100
commit1eb274dcaaf1ee5f79505da935afcd89856e21fd (patch)
tree8a15beb7ae2107a14da4d8a12bf8daf56c203f63
parent893c9110c99cff286011e3d35acb39ba65a97476 (diff)
Implementation of Glide.
Replace the current way by Glide for more stability. Also allows to keep the images with sharedpreferences.
-rw-r--r--app/build.gradle7
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/MainActivity.kt4
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/topanime/TopAnimeAdapter.kt36
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/topmanga/TopMangaAdapter.kt35
-rw-r--r--app/src/main/res/layout/item_layout.xml30
5 files changed, 35 insertions, 77 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 4a23638..4dd9f20 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -48,8 +48,8 @@ dependencies {
//Recycleview
implementation "androidx.recyclerview:recyclerview:1.1.0"
//Retrofit
- implementation 'com.squareup.retrofit2:retrofit:2.6.0'
- implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
+ implementation 'com.squareup.retrofit2:retrofit:2.9.0'
+ implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// Required for local unit tests (JUnit 4 framework)
testImplementation 'junit:junit:4.13.2'
@@ -58,5 +58,8 @@ dependencies {
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
+ //to display images
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
} \ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/MainActivity.kt b/app/src/main/java/xyz/adjutor/aniki/MainActivity.kt
index 50cd24f..a195f97 100644
--- a/app/src/main/java/xyz/adjutor/aniki/MainActivity.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/MainActivity.kt
@@ -1,11 +1,9 @@
package xyz.adjutor.aniki
import android.os.Bundle
-import com.google.android.material.floatingactionbutton.FloatingActionButton
-import com.google.android.material.snackbar.Snackbar
-import androidx.appcompat.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
+import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
diff --git a/app/src/main/java/xyz/adjutor/aniki/topanime/TopAnimeAdapter.kt b/app/src/main/java/xyz/adjutor/aniki/topanime/TopAnimeAdapter.kt
index 68a2c7b..4953939 100644
--- a/app/src/main/java/xyz/adjutor/aniki/topanime/TopAnimeAdapter.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/topanime/TopAnimeAdapter.kt
@@ -2,20 +2,15 @@
package xyz.adjutor.aniki.topanime
-import android.annotation.SuppressLint
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import android.os.AsyncTask
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
import xyz.adjutor.aniki.R
-import xyz.adjutor.aniki.topanime.TopAnime
-import xyz.adjutor.aniki.topanime.TopAnimeAdapter
class TopAnimeAdapter(val animeList: List<TopAnime>) :
RecyclerView.Adapter<TopAnimeAdapter.AnimeViewHolder>() {
@@ -26,7 +21,6 @@ class TopAnimeAdapter(val animeList: List<TopAnime>) :
val animeRank: TextView = itemView.findViewById(R.id.tv_rank)
val animeScore: TextView = itemView.findViewById(R.id.tv_score)
val animeImage: ImageView = itemView.findViewById(R.id.iv_image)
-
}
// Returns a new ViewHolder
@@ -48,27 +42,13 @@ class TopAnimeAdapter(val animeList: List<TopAnime>) :
holder.animeTitle.text = currentAnime.title
holder.animeRank.text = currentAnime.rank.toString()
holder.animeScore.text = currentAnime.score.toString()
- DownloadImageFromInternet(holder.animeImage).execute(currentAnime.image_url)
+ val image : String = currentAnime.image_url.toString()
+ Glide
+ .with(holder.itemView.context)
+ .load(image)
+ .apply(RequestOptions().override(400))
+ .into(holder.animeImage)
}
- @SuppressLint("StaticFieldLeak")
- private inner class DownloadImageFromInternet(var imageView: ImageView) : AsyncTask<String, Void, Bitmap?>() {
- override fun doInBackground(vararg urls: String): Bitmap? {
- val imageURL = urls[0]
- var image: Bitmap? = null
- try {
- val `in` = java.net.URL(imageURL).openStream()
- image = BitmapFactory.decodeStream(`in`)
- }
- catch (e: Exception) {
- Log.e("Error Message", e.message.toString())
- e.printStackTrace()
- }
- return image
- }
- override fun onPostExecute(result: Bitmap?) {
- imageView.setImageBitmap(result)
- }
- }
}
diff --git a/app/src/main/java/xyz/adjutor/aniki/topmanga/TopMangaAdapter.kt b/app/src/main/java/xyz/adjutor/aniki/topmanga/TopMangaAdapter.kt
index 22872b2..f5a2bd2 100644
--- a/app/src/main/java/xyz/adjutor/aniki/topmanga/TopMangaAdapter.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/topmanga/TopMangaAdapter.kt
@@ -2,17 +2,14 @@
package xyz.adjutor.aniki.topmanga
-import android.annotation.SuppressLint
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
-import android.os.AsyncTask
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
import xyz.adjutor.aniki.R
class TopMangaAdapter(val mangaList: List<TopManga>) :
@@ -24,7 +21,6 @@ class TopMangaAdapter(val mangaList: List<TopManga>) :
val mangaRank: TextView = itemView.findViewById(R.id.tv_rank)
val mangaScore: TextView = itemView.findViewById(R.id.tv_score)
val mangaImage: ImageView = itemView.findViewById(R.id.iv_image)
-
}
// Returns a new ViewHolder
@@ -46,27 +42,12 @@ class TopMangaAdapter(val mangaList: List<TopManga>) :
holder.mangaTitle.text = currentManga.title
holder.mangaRank.text = currentManga.rank.toString()
holder.mangaScore.text = currentManga.score.toString()
- DownloadImageFromInternet(holder.mangaImage).execute(currentManga.image_url)
- }
-
- @SuppressLint("StaticFieldLeak")
- private inner class DownloadImageFromInternet(var imageView: ImageView) : AsyncTask<String, Void, Bitmap?>() {
- override fun doInBackground(vararg urls: String): Bitmap? {
- val imageURL = urls[0]
- var image: Bitmap? = null
- try {
- val `in` = java.net.URL(imageURL).openStream()
- image = BitmapFactory.decodeStream(`in`)
- }
- catch (e: Exception) {
- Log.e("Error Message", e.message.toString())
- e.printStackTrace()
- }
- return image
- }
- override fun onPostExecute(result: Bitmap?) {
- imageView.setImageBitmap(result)
- }
+ val image : String = currentManga.image_url.toString()
+ Glide
+ .with(holder.itemView.context)
+ .load(image)
+ .apply(RequestOptions().override(400))
+ .into(holder.mangaImage)
}
}
diff --git a/app/src/main/res/layout/item_layout.xml b/app/src/main/res/layout/item_layout.xml
index 8d7a792..5ef1c19 100644
--- a/app/src/main/res/layout/item_layout.xml
+++ b/app/src/main/res/layout/item_layout.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<androidx.cardview.widget.CardView
- xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cv_cardView"
android:layout_width="match_parent"
@@ -9,30 +8,30 @@
android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"
- app:cardCornerRadius="10dp"
app:cardBackgroundColor="@color/black"
- >
+ app:cardCornerRadius="13dp">
+ <!--android:onClick="fromListToDetail"-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:padding="10dp"
- >
+ android:padding="10dp">
<ImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:layout_constraintTop_toTopOf="parent"
+ android:contentDescription="@string/rv_image"
+ android:src="@mipmap/ic_launcher"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
- android:src="@mipmap/ic_launcher"
- android:contentDescription="@string/rv_image" />
+ app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="match_parent"
+ android:layout_marginHorizontal="10sp"
android:fontFamily="@font/bangers"
android:text="@string/rv_title"
android:textAlignment="center"
@@ -41,32 +40,29 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_image"
- app:layout_constraintTop_toTopOf="parent"
- android:layout_marginHorizontal="10sp"/>
+ app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_rank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@color/very_dark_purple"
android:text="@string/rv_rank"
android:textColor="@color/slightly_desaturated_magenta"
android:textSize="20sp"
+ app:layout_constraintBottom_toTopOf="@id/tv_title"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@id/tv_title"/>
+ app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@color/very_dark_purple"
android:text="@string/rv_score"
android:textColor="@color/slightly_desaturated_magenta"
android:textSize="20sp"
- app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintTop_toBottomOf="@id/tv_title"/>
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/tv_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView> \ No newline at end of file