diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 6f0c665..a0e28b1 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -34,7 +34,7 @@ android { } dependencies { - + implementation(COIL.compose) implementation(Kotlin.stdlib) implementation(AndroidX.core.ktx) implementation(AndroidX.appCompat) diff --git a/android/src/main/java/playground/android/CoilFragment.kt b/android/src/main/java/playground/android/CoilFragment.kt index 63f517a..f24ff51 100644 --- a/android/src/main/java/playground/android/CoilFragment.kt +++ b/android/src/main/java/playground/android/CoilFragment.kt @@ -1,14 +1,29 @@ package playground.android import android.os.Bundle -import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView +import androidx.fragment.app.Fragment +import coil.load +import coil.transform.CircleCropTransformation +import coil.transform.RoundedCornersTransformation +import java.io.File + + +/** + * coil-kt/coil - An image loading library for Android backed by Kotlin Coroutines +- [Website](https://coil-kt.github.io/coil/) +- [GitHub coil-kt/coil](https://github.com/coil-kt/coil) + */ class CoilFragment : Fragment() { + private var ivFile: ImageView? = null + private var ivUrl: ImageView? = null + private var ivDrawable: ImageView? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -18,4 +33,69 @@ class CoilFragment : Fragment() { return inflater.inflate(R.layout.fragment_coil, container, false) } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + // initializing the imageViews + initializeImages() + + //Loading from a URL + loadFromURL() + + //Loading from an image drawable + loadFromDrawable() + + // Loading from a file + loadFromFile() + + //adding placeholder to loading images + addingPlaceholder() + + //applying some basic transformations to image using coil + + // Crops and centres the image into a circle. + circleCropTransformation() + + // Crops the image to fit the target's dimensions and rounds the corners of the image. + roundedCornerTransformation() + + + } + + private fun roundedCornerTransformation() { + ivUrl?.load("https://via.placeholder.com/600/92c952") { + transformations(RoundedCornersTransformation()) + } + } + + private fun circleCropTransformation() { + ivUrl?.load("https://via.placeholder.com/600/92c952") { + transformations(CircleCropTransformation()) + } + } + + private fun addingPlaceholder() { + ivUrl?.load("https://via.placeholder.com/600/92c952") { + placeholder(R.drawable.placeholder_img) + } + } + + private fun loadFromFile() { + ivFile?.load(File("/path/to/some_image_placeholder.png")) + } + + private fun loadFromDrawable() { + ivDrawable?.load(R.drawable.placeholder_img) + } + + private fun loadFromURL() { + ivUrl?.load("https://via.placeholder.com/600/92c952") + } + + private fun initializeImages() { + ivFile = view?.findViewById(R.id.ivFile) + ivUrl = view?.findViewById(R.id.ivUrl) + ivDrawable = view?.findViewById(R.id.ivDrawable) + } + } diff --git a/android/src/main/res/drawable/placeholder_img.jpeg b/android/src/main/res/drawable/placeholder_img.jpeg new file mode 100644 index 0000000..fcde1cd Binary files /dev/null and b/android/src/main/res/drawable/placeholder_img.jpeg differ diff --git a/android/src/main/res/layout/fragment_coil.xml b/android/src/main/res/layout/fragment_coil.xml index e819eee..026bd85 100644 --- a/android/src/main/res/layout/fragment_coil.xml +++ b/android/src/main/res/layout/fragment_coil.xml @@ -1,14 +1,28 @@ <?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".CoilFragment"> - - <TextView - android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="@string/hello_blank_fragment" /> - -</FrameLayout> + <ImageView + android:layout_width="150dp" + android:layout_height="150dp" + android:layout_above="@id/ivDrawable" + android:layout_centerHorizontal="true" + android:layout_marginBottom="15dp" + android:id="@+id/ivFile" /> + <ImageView + android:layout_width="150dp" + android:layout_height="150dp" + android:layout_alignParentEnd="true" + android:layout_marginEnd="50dp" + android:layout_centerVertical="true" + android:id="@+id/ivUrl" /> + <ImageView + android:layout_centerVertical="true" + android:layout_width="150dp" + android:layout_height="150dp" + android:layout_marginStart="50dp" + android:id="@+id/ivDrawable" /> +</RelativeLayout> diff --git a/kotlin-jvm/build.gradle.kts b/kotlin-jvm/build.gradle.kts index d579ff5..8489af6 100644 --- a/kotlin-jvm/build.gradle.kts +++ b/kotlin-jvm/build.gradle.kts @@ -86,6 +86,7 @@ dependencies { implementation("com.apollographql.apollo:apollo-runtime:_") implementation(KotlinX.serialization.json) implementation(KotlinX.serialization.properties) + // Keep dependencies sorted to minimize merge conflicts on pull-requests! }