以编程方式创建图层列表

programmatically create layer-list

我正在尝试以编程方式创建一个图层列表,其中将调整大小的位图作为项目。据我所知,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 构造函数以及如何 link 背景对象的可绘制资源。

你提到你想从几个位图中制作一个图层列表。您所拥有的基本上是正确的,您需要做的就是获取每个位图对象并将其转换为 BitmapDrawable。为此,您可以使用:

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

如果您在 activity 中,当您执行此操作时,您甚至不需要调用 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)(在 [=32= 之前的版本上)将其设置在视图的背景上] 16). This post 展示了如何检查设备版本并在支持 16 之前的设备时调用适当的方法。

如果您想相对于彼此定位图层,那么您还需要像代码中那样使用 setLayerInset(),但我建议您在获取图层列表后尝试这样做显示。