如何在Android中将颜色资源设置为墙纸?

丹麦人安萨里

我想在Android中将纯色设置为墙纸,但是当我单击按钮时,应用程序不幸地停止了。

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            WallpaperManager wm = WallpaperManager.getInstance(getApplicationContext());
            try {
                wm.setResource(R.color.red);
                Toast.makeText(getApplicationContext(), "Wallpaper changed", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}

这是colors.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff4366</color>
</resources>

Logcat:

10-24 15:59:26.216  12529-12529/com.danish.testapp D/AndroidRuntime﹕ Shutting down VM
    --------- beginning of crash
10-24 15:59:26.216  12529-12529/com.danish.testapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.danish.testapp, PID: 12529
    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference
            at android.content.res.Resources.openRawResource(Resources.java:1271)
            at android.content.res.Resources.openRawResource(Resources.java:1241)
            at android.app.WallpaperManager.setResource(WallpaperManager.java:739)
            at com.danish.testapp.MainActivity$1.onClick(MainActivity.java:30)
            at android.view.View.performClick(View.java:5198)
            at android.view.View$PerformClick.run(View.java:21147)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我还在清单中设置了所需的权限。

穆罕默德·侯赛因·杰拉米

对于WallpaperManager,必须设置可绘制。

wm.setResource(R.drawable.your_drawable);

已编辑

您还必须设置权限。

android.permission.SET_WALLPAPER

对于可绘制的设置颜色,您可以使用

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

    <item>
        <shape>
            <solid android:color="@color/your_coloe" />
        </shape>
    </item>

</selector>

已编辑

终于解决:

我写一个样本。有效。好好享受。

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_CODE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WallpaperManager wm = WallpaperManager.getInstance(this);

        Drawable drawable = getResources().getDrawable(R.drawable.mydrawable);
        Bitmap bitmap = drawableToBitmap(drawable);
        Log.i(getClass().getName(), "bitmap = " +bitmap);
        try {
            wm.setBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Toast.makeText(this, "Wallpaper changed",
                Toast.LENGTH_LONG).show();



    }



    public static Bitmap drawableToBitmap (Drawable drawable) {
        Bitmap bitmap = null;

        if (drawable instanceof BitmapDrawable) {
            BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
            if(bitmapDrawable.getBitmap() != null) {
                return bitmapDrawable.getBitmap();
            }
        }

        if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
            bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
        } else {
            bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
        }

        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        drawable.draw(canvas);
        return bitmap;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android中将颜色资源设置为墙纸?

来自分类Dev

如何在CSS中将颜色设置为用户的链接颜色?

来自分类Dev

如何在SFML中将颜色设置为alpha(去除颜色)?

来自分类Dev

如何在Xfce中基于墙纸颜色设置背景颜色?

来自分类Dev

如何在Webpack中将'src'设置为资源根目录?

来自分类Dev

如何在Google Maps Android中将标记颜色设置为黑色

来自分类Dev

(Android)如何在透明活动中将状态栏颜色设置为黑色?

来自分类Dev

如何在 CARTO Mobile SDK (Xamarin iOS/Android) 中将背景颜色设置为透明?

来自分类Dev

如何在Flutter中将渐变颜色设置为图标?

来自分类Dev

如何在PowerApps中将颜色设置为全局变量?

来自分类Dev

如何在R中将某些值设置为特定颜色?

来自分类Dev

如何在Android中的以下代码中添加设置为墙纸选项

来自分类Dev

Android“设置为墙纸”功能

来自分类Dev

如何在Android中为imageview设置颜色

来自分类Dev

如何在Android中将位图设置为通知图标

来自分类Dev

如何在Android中将背景设置为edittext?

来自分类Dev

如何在Android中将ListView Scroll位置设置为底部?

来自分类Dev

如何在Android中将“活动”的根视图设置为片段?

来自分类Dev

如何在Android中将标签设置为Google Map的标记?

来自分类Dev

如何在Android中将标签设置为片段

来自分类Dev

如何在Android中将Checkbox cheked值设置为textview?

来自分类Dev

如何在Android中将src设置为relativeLayout?

来自分类Dev

如何在Android中将事件动态设置为本地日历?

来自分类Dev

如何在Android中将背景设置为edittext?

来自分类Dev

如何在Chart.js中将颜色系列设置为饼图

来自分类Dev

如何在Java中将itext pdf文件的段落设置为具有背景颜色的矩形

来自分类Dev

如何在cocos2d中将粒子颜色设置为黑色

来自分类Dev

如何在WebStorm中将项目文件夹设置为不同的颜色

来自分类Dev

如何在altair中将自定义颜色主题设置为默认值?

Related 相关文章

  1. 1

    如何在Android中将颜色资源设置为墙纸?

  2. 2

    如何在CSS中将颜色设置为用户的链接颜色?

  3. 3

    如何在SFML中将颜色设置为alpha(去除颜色)?

  4. 4

    如何在Xfce中基于墙纸颜色设置背景颜色?

  5. 5

    如何在Webpack中将'src'设置为资源根目录?

  6. 6

    如何在Google Maps Android中将标记颜色设置为黑色

  7. 7

    (Android)如何在透明活动中将状态栏颜色设置为黑色?

  8. 8

    如何在 CARTO Mobile SDK (Xamarin iOS/Android) 中将背景颜色设置为透明?

  9. 9

    如何在Flutter中将渐变颜色设置为图标?

  10. 10

    如何在PowerApps中将颜色设置为全局变量?

  11. 11

    如何在R中将某些值设置为特定颜色?

  12. 12

    如何在Android中的以下代码中添加设置为墙纸选项

  13. 13

    Android“设置为墙纸”功能

  14. 14

    如何在Android中为imageview设置颜色

  15. 15

    如何在Android中将位图设置为通知图标

  16. 16

    如何在Android中将背景设置为edittext?

  17. 17

    如何在Android中将ListView Scroll位置设置为底部?

  18. 18

    如何在Android中将“活动”的根视图设置为片段?

  19. 19

    如何在Android中将标签设置为Google Map的标记?

  20. 20

    如何在Android中将标签设置为片段

  21. 21

    如何在Android中将Checkbox cheked值设置为textview?

  22. 22

    如何在Android中将src设置为relativeLayout?

  23. 23

    如何在Android中将事件动态设置为本地日历?

  24. 24

    如何在Android中将背景设置为edittext?

  25. 25

    如何在Chart.js中将颜色系列设置为饼图

  26. 26

    如何在Java中将itext pdf文件的段落设置为具有背景颜色的矩形

  27. 27

    如何在cocos2d中将粒子颜色设置为黑色

  28. 28

    如何在WebStorm中将项目文件夹设置为不同的颜色

  29. 29

    如何在altair中将自定义颜色主题设置为默认值?

热门标签

归档