¿Cómo establecer una imagen como fondo de pantalla mediante programación en Android?

Configurar el fondo de pantalla en Android mediante programación es útil cuando la aplicación obtiene fondos de pantalla de la biblioteca API y le pregunta al usuario si desea configurar el fondo de pantalla para la pantalla de inicio o no. En este artículo, se ha discutido cómo configurar una imagen de muestra como fondo de pantalla de la pantalla de inicio mediante programación. Eche un vistazo a la siguiente imagen para tener una idea de cómo funcionará después de la implementación. Tenga en cuenta que vamos a implementar este proyecto utilizando el  lenguaje Java  . 

 Set an Image as Wallpaper Programmatically in Android

Pasos para implementar la configuración del fondo de pantalla mediante programación

Paso 1: Crear un nuevo proyecto

Paso 2: ahora agregue el permiso al archivo AndroidManifest.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.adityamshidlyali.setimageaswallpaper">
  
    <!--access permission to set the wallpaper-->
    <uses-permission android:name="android.permission.SET_WALLPAPER" />
  
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
  
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  
</manifest>
  • Consulte la siguiente imagen si no puede ubicar el archivo AndroidManifest.xml para invocar el permiso.

Set an Image as Wallpaper Programmatically in Android

Paso 3: ahora importa algunas imágenes a la carpeta dibujable

  • Importe algunas imágenes a la carpeta dibujable o puede obtener las imágenes de las bibliotecas API.
  • En este caso, se ha importado una imagen de logotipo de GeeksforGeeks de muestra a la carpeta dibujable.
  • La carpeta dibujable se puede obtener en la aplicación> src> principal> res> dibujable
  • Si no puede ubicar la carpeta dibujable, consulte la siguiente imagen.

Set an Image as Wallpaper Programmatically in Android

Paso 4: trabajar con el archivo activity_main.xml

  • Invoque el diseño simple que se proporciona a continuación en el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    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"
    android:orientation="vertical"
    tools:context=".MainActivity"
    tools:ignore="HardcodedText">
  
    <!--layout to bound the width and height of the wallpaper preview-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp">
        <!--a sample image view for the preview purpose-->
        <ImageView
            android:id="@+id/wallpaper_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:scaleType="centerCrop"
            android:src="@drawable/wallpaper" />
    </LinearLayout>
  
    <!--button which sets the image as wallpaper-->
    <Button
        android:id="@+id/set_wallpaper_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:text="Set As Wallpaper" />
  
</LinearLayout>

Se produce la siguiente interfaz de usuario de salida: 

Set an Image as Wallpaper Programmatically in Android

Paso 5: trabajar con el archivo MainActivity.java 

  • Maneje el botón para configurar el fondo de pantalla deseado usando WallpaperManager.
  • Invoque el siguiente código en el archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.app.WallpaperManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import java.io.IOException;
  
public class MainActivity extends AppCompatActivity {
  
    // button to set the home screen wallpaper when clicked
    Button bSetWallpaper;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // creating the instance of the WallpaperManager
        final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
  
        // handle the set wallpaper button to set the desired wallpaper for home screen
        bSetWallpaper = findViewById(R.id.set_wallpaper_button);
        bSetWallpaper.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("ResourceType")
            @Override
            public void onClick(View v) {
                try {
                    // set the wallpaper by calling the setResource function and 
                      // passing the drawable file
                    wallpaperManager.setResource(R.drawable.wallpaper);
                } catch (IOException e) {
                    // here the errors can be logged instead of printStackTrace
                    e.printStackTrace();
                }
            }
        });
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por adityamshidlyali 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 *