我目前正在我的应用程序中使用BitmapDrawable,但不幸的是,这个实现在Lollipop中似乎有些破解(它在LP之前工作正常,关于该问题存在一个单独的问题)。
所以,好吧,我有一个基本上是这样的XML文件:
backgrounds.xml
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/backgrounds_xlarge" />
以上是一个XML文件(别名),它指向一个实际的png文件。
在我的代码中,我得到了这样的位图:
代码
BitmapDrawable bd = (BitmapDrawable) view.getResources().getDrawable(R.drawable.backgrounds);
backgrounds = bd.getBitmap();
这个问题是问是否有另一种获取此位图的方法?请注意,BitmapFactory对我不利,因为我必须能够通过上面显示的xml别名获取此位图。
我已经阅读了Offical docs on creating XML Aliases但不幸的是,在解释如何访问位图方面,它们有点缺乏。
任何帮助或建议表示赞赏。
答案 0 :(得分:1)
以下是使用Bitmap
从BitmapDrawable
获取Canvas
的另一种方式:
BitmapDrawable bd = (BitmapDrawable) view.getResources().getDrawable(R.drawable.backgrounds);
Bitmap backgrounds = Bitmap.createBitmap(bd.getIntrinsicWidth(), bd.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(backgrounds);
bd.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
bd.draw(canvas);