首页 > 解决方案 > 将设备壁纸设置为渐变背景(Android Studio)

问题描述

我在drawable文件夹中创建了一个渐变drawable。它是 xml 文件中的形状。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle" >
            <gradient
                android:angle="45"
                android:centerColor="@color/centerColor"
                android:endColor="@color/endColor"
                android:startColor="@color/startColor" />
        </shape>
    </item>
</selector>

当单击某个按钮时,我正在尝试将渐变设置为使用该应用程序的设备的墙纸。这甚至可能吗?

提前致谢。:)

Java 代码:

public void onClick(View v) {
//                WallpaperManager myWallpaperManager  = WallpaperManager.getInstance(getApplicationContext());
                InputStream is = getResources().openRawResource(R.raw.gradient);
                Bitmap b = BitmapFactory.decodeStream(is);

                try {
//                    myWallpaperManager.setBitmap(+ R.drawable.gradient);
                    getApplicationContext().setWallpaper(b);
                    Toast.makeText(getApplicationContext(),"Wallpaper updated", Toast.LENGTH_SHORT ).show();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

标签: androidandroid-studio-3.0

解决方案


这甚至可能吗?

对的,这是可能的。

  1. 在您的manifest.

  1. 在您的 res 文件夹中创建 raw 文件夹,并将该渐变添加到 raw 文件夹中

  2. 并在您的应用程序中使用此代码。

           WallpaperManager myWallpaperManager  = WallpaperManager.getInstance(getApplicationContext());
            try {
                myWallpaperManager.setResource(R.raw.your_gradient_drawable);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    

推荐阅读