📌  相关文章
📜  如何在Android中以编程方式将图像设置为墙纸?

📅  最后修改于: 2021-05-10 14:46:28             🧑  作者: Mango

当应用程序从API库中获取墙纸并询问用户是否为主屏幕设置墙纸时,以编程方式在Android中设置墙纸会很有帮助。在本文中,已经讨论了如何以编程方式将示例图像设置为主屏幕墙纸。请看下面的图片,以了解实现后的工作原理。注意,我们将使用Java语言实现该项目。

在Android中以编程方式将图像设置为墙纸

以编程方式实施墙纸设置的步骤

步骤1:创建一个新项目

  • 要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。
  • 请注意,选择Java作为编程语言。

步骤2:现在将权限添加到AndroidManifest.xml文件

  • AndroidMainfest.xml文件中调用以下代码。
XML


  
    
    
  
    
        
            
                
  
                
            
        
    
  


XML


  
    
    
        
        
    
  
    
    


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();
                }
            }
        });
    }
}


  • 如果无法找到要调用权限的AndroidManifest.xml文件,请参考下图。

在Android中以编程方式将图像设置为墙纸

步骤3:现在将一些图像导入到drawable文件夹

  • 将一些图像导入到drawable文件夹中,或者可以从API库中获取图像。
  • 在这种情况下,示例GeeksforGeeks徽标图像已导入到drawable文件夹中。
  • drawable文件夹可以在应用程序> src> main> res> drawable下获得
  • 如果无法找到可绘制文件夹,请参考下图。

在Android中以编程方式将图像设置为墙纸

步骤4:使用activity_main.xml文件

  • activity_main.xml文件中调用下面给出的简单布局。在代码内部添加了注释,以更详细地了解代码。

XML格式



  
    
    
        
        
    
  
    
    

产生以下输出UI:

在Android中以编程方式将图像设置为墙纸

步骤5:使用MainActivity。 Java文件

  • 使用此按钮可以使用WallpaperManager设置所需的墙纸。
  • MainActivity中调用以下代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

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();
                }
            }
        });
    }
}

输出:在模拟器上运行