¿Cómo cargar cualquier imagen desde la URL sin usar ninguna dependencia en Android?

Muchas aplicaciones muestran imágenes de Internet utilizando API de terceros como Glide y Picasso para cargar imágenes. Esto significa que dichas aplicaciones dependen en parte de estos servicios para seguir funcionando correctamente. Para mejorar la aplicación, uno debe escribir su propio código en lugar de depender de tales servicios. En este artículo, le mostraremos cómo puede cargar fácilmente imágenes en su aplicación sin utilizar ningún servicio externo.

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Demostramos la aplicación en Kotlin , así que asegúrese de seleccionar Kotlin como idioma principal al crear un nuevo proyecto.

Paso 2: Agregar permiso de Internet en AndroidManifest.xml

Dado que las imágenes tienen la forma de URL, la aplicación necesitará permisos de Internet para analizar la información.

XML

<uses-permission android:name="android.permission.INTERNET"/>

Paso 3: crea un ImageView en el diseño

aplicación > res > diseño > actividad_principal.xml actividad_principal.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">
  
      <!-- The image will load in this ImageView -->
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
  
</RelativeLayout>

Paso 4: programa para cargar la imagen desde la URL y mostrarla en ImageView

Actividad principal.kt Actividad principal.kt

Kotlin

import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.widget.ImageView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import java.util.concurrent.Executors
  
class MainActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing the ImageView
        val imageView = findViewById<ImageView>(R.id.imageView)
  
        // Declaring executor to parse the URL
        val executor = Executors.newSingleThreadExecutor()
          
        // Once the executor parses the URL 
        // and receives the image, handler will load it
        // in the ImageView
        val handler = Handler(Looper.getMainLooper())
          
        // Initializing the image
        var image: Bitmap? = null
  
        // Only for Background process (can take time depending on the Internet speed)
        executor.execute {
            
             // Image URL
            val imageURL = "https://media.geeksforgeeks.org/wp-content/cdn-uploads/gfg_200x200-min.png"
              
              // Tries to get the image and post it in the ImageView
              // with the help of Handler
              try {
                val `in` = java.net.URL(imageURL).openStream()
                image = BitmapFactory.decodeStream(`in`)
  
                // Only for making changes in UI
                handler.post {
                    imageView.setImageBitmap(image)
                }
            }
              
            // If the URL doesnot point to 
              // image or any other kind of failure
            catch (e: Exception) {
                e.printStackTrace()
            }
        }
    }
}

Producción:

Podemos ver que la imagen se carga correctamente. Esto significa que la aplicación funciona perfectamente según lo previsto.

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *