Как программно установить изображение в качестве обоев в Android?

Опубликовано: 1 Декабря, 2021

Программная установка обоев в Android полезна, когда приложение загружает обои из библиотеки API и спрашивает пользователя, установить обои для домашнего экрана или нет. В этой статье обсуждалось, как программно установить образец изображения в качестве обоев рабочего экрана. Взгляните на следующее изображение, чтобы понять, как это будет работать после реализации. Обратите внимание, что мы собираемся реализовать этот проект на языке Java.

Шаги по реализации программной установки обоев

Шаг 1. Создайте новый проект

  • Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать / запустить новый проект в Android Studio».
  • Обратите внимание, что выберите Java в качестве языка программирования.

Шаг 2. Теперь добавьте разрешение к файлу AndroidManifest.xml.

  • Вызовите следующий код в файле AndroidMainfest.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 >
  • См. Следующее изображение, если не удается найти файл AndroidManifest.xml для вызова разрешения.

Шаг 3: Теперь импортируйте несколько изображений в папку с возможностью рисования.

  • Импортируйте некоторые изображения в папку с возможностью рисования или можете получить изображения из библиотек API.
  • В этом случае образец изображения логотипа GeeksforGeeks был импортирован в папку для рисования.
  • Папку с возможностью рисования можно получить в приложении> src> main> res> drawable
  • Если не удается найти папку с возможностью переноса, обратитесь к следующему изображению.

Шаг 4. Работа с файлом activity_main.xml

  • Вызовите простой макет, приведенный ниже, в файле activity_main.xml. Комментарии добавляются внутри кода для более подробного понимания кода.

XML

<? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout
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 >

Создается следующий выходной интерфейс:

Шаг 5: Работа с файлом MainActivity.java

  • Обработайте кнопку, чтобы установить желаемые обои с помощью WallpaperManager.
  • Вызовите следующий код в файле MainActivity.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();
}
}
});
}
}

Выход: запустить на эмуляторе

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .