以编程方式创建图层列表

时间:2016-07-01 10:33:42

标签: java android android-bitmap

我正在尝试以编程方式创建一个包含已调整大小的位图作为项目的图层列表。从我所看到的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构造函数以及如何将可绘制资源链接到背景对象。

1 个答案:

答案 0 :(得分:11)

您提到要从几个位图制作图层列表。您所拥有的内容在很大程度上是正确的,您需要做的就是获取每个位图对象并将其转换为BitmapDrawable。为此,您可以使用:

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

如果您在执行此活动时甚至不需要致电context.getResources(),只需getResources()

然后你将获取所有图层并创建你的LayerDrawable,就像你现在一样:

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

(请注意,layer3将位于layer2之上,而layer2将位于layer1之上)。

拥有LayerDrawable后,您可以使用view.setBackgoundDrawable(drawable)(在API 16及更高版本上)或view.setBackground(drawable)(在API 16之前)在视图的背景上进行设置。 This post显示了如果您支持前16个设备,如何检查设备版本并调用相应的方法。

如果您想将图层相对于彼此放置,那么您还需要在代码中使用setLayerInset(),但我建议您在获取图层列表后再尝试。