2016-07-01 50 views
2

嗨我试图以编程方式创建一个图层列表调整大小的位图作为项目。从我看到的BitmapDrawable已被弃用。新的构造函数需要以下参数 - public BitmapDrawable(Resources res,Bitmap bitmap)。我从下面的一个非常基本的例子开始。以编程方式创建图层列表

BitmapDrawable background = new BitmapDrawable(); 
    background.setBounds(10,10,10,10); 
    Drawable[] layers = {background}; 
    LayerDrawable splash_test = new LayerDrawable(layers); 
    splash_test.setLayerInset(0, 0, 0, 0, 0); 

如何正确使用新的BitmapDrawable构造函数,以及如何将可绘制资源链接到背景对象。

回答

5

你提到你想从一些位图上创建一个图层列表。你所拥有的基本上是正确的,你需要做的就是把每个位图对象变成一个BitmapDrawable。要做到这一点,你可以使用:

BitmapDrawable layer1 = new BitmapDrawable(context.getResources(), bitmap1); 

如果你是一个活动,当你这样做,你甚至不需要调用context.getResources(),只是getResources()

然后,你将采取所有图层并创建LayerDrawable,就像你已经是:

Drawable[] layers = {layer1, layer2, layer3}; 
LayerDrawable splash_test = new LayerDrawable(layers); 

(注意,三层将高于二层,二层将上述层1)。

一旦你有了LayerDrawable,你可以在你的视图的背景上使用view.setBackgoundDrawable(drawable)(在API 16和更高版本上)或view.setBackground(drawable)(在API 16之前)进行设置。 This post显示如何检查设备版本并在支持前16个设备时调用适当的方法。

如果你想定位图层的相对位置,那么你也需要像你的代码一样使用setLayerInset(),但是我建议你在获取你的图层列表后尝试。

+0

非常感谢详细的写得详细的解释,bitmap1上面提到什么或者我将如何创建该对象 –

+0

没问题! 'bitmap1'应该是您想调整大小并放入图层列表的位图之一。我从你的问题中推断你已经有了位图。如果情况并非如此,您可以在要执行此操作的位置添加代码并解释您计划获取位图的位置? –