我正在尝试以编程方式创建一个图层列表,其中包含调整大小的位图作为项目。据我所知,BitmapDrawable已经被弃用了。新的构造函数需要以下参数-公共BitmapDrawable (资源res,位图位图)。我从下面的一个非常基本的例子开始。
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构造函数,以及如何将可绘制资源链接到背景对象。
发布于 2016-07-02 06:50:43
你提到你想从几个位图中创建一个图层列表。你所做的大部分都是正确的,你所需要做的就是把每个位图对象转换成一个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) (在API16及更高版本上)或view.setBackground(drawable) (在pre API16上)在视图的背景上设置它。This post展示了如何检查设备版本并调用适当的方法,如果您支持pre - 16设备。
如果你想把层放在相对的位置,那么你也需要像在你的代码中一样使用setLayerInset(),但是我建议你在显示你的层列表之后再试一试。
https://stackoverflow.com/questions/38143181
复制相似问题