首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式创建layer-list

以编程方式创建layer-list
EN

Stack Overflow用户
提问于 2016-07-01 18:33:42
回答 1查看 9.3K关注 0票数 10

我正在尝试以编程方式创建一个图层列表,其中包含调整大小的位图作为项目。据我所知,BitmapDrawable已经被弃用了。新的构造函数需要以下参数-公共BitmapDrawable (资源res,位图位图)。我从下面的一个非常基本的例子开始。

代码语言:javascript
复制
    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构造函数,以及如何将可绘制资源链接到背景对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-02 06:50:43

你提到你想从几个位图中创建一个图层列表。你所做的大部分都是正确的,你所需要做的就是把每个位图对象转换成一个BitmapDrawable。为此,您可以使用:

代码语言:javascript
复制
BitmapDrawable layer1 = new BitmapDrawable(context.getResources(), bitmap1);

如果您在活动中执行此操作,则甚至不需要调用context.getResources(),只需调用getResources()

然后,您将使用所有层并创建LayerDrawable,就像您已经在做的那样:

代码语言:javascript
复制
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(),但是我建议你在显示你的层列表之后再试一试。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38143181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档