I have a multiple images about 600 image I want to use it for page in viewPager. I put it all in drawable but it’s take space what is the best way to store image?
Advertisement
Answer
Uploading them to a Cloudstorage (or Discord) and then loading the images with their links using Coil or Glide would be a way.
As a Kotlin-User Coil is the way to go. It’s very lightweight, for additional functionalities (like animating Gifs, loading SVGs) take a look here.
Dependency:
implementation("io.coil-kt:coil:1.2.1")
Load image from Url (trailing Lambda is optional):
imageView.load(imageUrl){ crossfade(true) placeholder(R.drawable.loading) transformations(CircleCropTransformation()) }
If You only have one Imageview per Page inside your Viewpager, You might create an Array with all the Urls given and then load them like so:
private var pageChangeCallback = object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { imageView.load(image_urls[position]) } }
If you prefer using Java, then go for Glide:
Dependency:
implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
Load image from Url (the options are optional):
RequestOptions options = new RequestOptions() .centerCrop() .placeholder(R.drawable.loading) .error(R.drawable.error); Glide.with(this).load(image_url).apply(options).into(imageView);
Load the image whenever another page is selected.
viewPager.addOnPageChangeListener(new OnPageChangeListener() { override void onPageSelected(int position) { Glide.with(this).load(image_urls[position]).apply(options).into(imageView); } }
Hope it helps 🙂