问题标签 [layerdrawable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11081 浏览

android - 如何以编程方式制作带有笔画的圆形可绘制对象?

背景

我试图有一个实心圆圈,具有一定颜色和宽度的笔画,以及里面的图像。

这可以很容易地在 XML 中完成,因此(这只是一个示例):

在此处输入图像描述

问题

我需要有上面的某些属性才能以编程方式更改,所以我不能使用 XML 文件,但思路还是一样的。

问题是,我找不到像在 XML 中那样在 OvalShape 可绘制对象上添加笔划的简单方法。我找不到执行此操作的功能。

我试过的

StackOverflow 上有一些解决方案,但我找不到一个效果很好的解决方案。我发现只有一个在这里,但它的笔划线正在被剪掉。

然而,我已经部分成功地解决了这个问题,即使用 XML 仅用于笔划本身:

stroke_drawable.xml

代码:

它可以工作,但不是完全以编程方式(笔画在 XML 中定义)。

问题

如何将代码更改为完全编程?


编辑:我尝试了这里的建议,但不是为背景添加额外的可绘制对象,因为我需要将所有这些都放在一个可绘制对象中,所以我使用了 LayerDrawable:

这可行,但由于某种原因,内部的可绘制对象(星形)被拉伸:

在此处输入图像描述

0 投票
2 回答
78 浏览

android - 显示一堆图像

给定

  • 位于资产文件夹中的许多图像(10 - 15)(如实践所示,更好的方法是在资产中保留高分辨率图像)
  • Android UI线程(提前缓存drawables已经在后台线程中进行)

问题:

需要在绘制图像后平滑地显示所有图像,并且不阻塞UI 线程。

已经使用的方法:

  • 动态创建所需数量,ImageView然后调用.setImageDrawable(). 这需要很多时间,但最糟糕的是,即使在所有图像都绘制在它们的ImageView.
  • 创建一个对象并将所需sLayerDrawable的数组作为参数传递。然后通过调用Drawable把它放在一个也。此选项的行为与上述选项相同。ImageView.setImageDrawable()

有没有办法解决这个问题?还是 Android 设备无法应对?

0 投票
1 回答
220 浏览

java - MenuItem.setIcon 在使用 BottomNavigationBar 时抛出 NullPointerException

我用底部导航栏替换了抽屉导航,发现我不能再使用动作视图,这就是为什么我使用 LayerDrawables 作为我的图标的原因。

现在我遇到了最后一个方法nav.setIcon(navMutate)抛出 NullPointerException 的问题。

不是那个navnavMutate为空,它在操作系统中更进一步,这是堆栈跟踪

我在这里使用这两个变量:

最后的LayerDrawable navMutate = (LayerDrawable) nav .getIcon().mutate();

navMutate .setDrawableByLayerId(R.id.ic_menu_upcoming_dot, notificationBullet);

不可能是因为其中任何一个都是空的,否则它会在那之前崩溃

它似乎只发生在低于 5 的 Android 版本上(所以 SDK 16-19)

0 投票
3 回答
4136 浏览

android - Drawable 已经属于另一个所有者,但没有公开一个常量状态

错误:添加到 LayerDrawable 的可绘制对象无效!Drawable 已经属于另一个所有者,但不公开一个常量状态。

今天突然注意到这个错误,不知道是不是因为我刚刚将我的测试设备更新到了Android 8.0。错误消息清楚地表明在浮动操作按钮上设置波纹效果有问题,按下按钮时确实没有波纹效果。但是,我不确定是什么导致了这个问题。实际上,完全相同的错误连续抛出两次。任何帮助将非常感激!该应用程序的其余部分仍然正常运行,但该错误确实困扰着我。

ps minSdkVersion 是22,targetSdkVersion 和compiledSdkVersion 是27

在 MyActivity 中,第 117 行是数据绑定和设置内容视图。

这是完整的堆栈跟踪:

0 投票
2 回答
127 浏览

android - 如何在按钮中创建简单的可绘制图层

我试图更好地理解图层可绘制对象在按钮可绘制对象中的工作方式。

我正在尝试绘制 2 个简单的彩色框,一个没有插图,以便填充整个按钮可绘制区域。一个有一些插图。

然而,这根本不起作用。第一个问题是盒子没有填满任何区域。那是因为按钮可绘制对象没有预定义的大小吗?如果是这种情况,我尝试在盒子上手动设置边界,但也没有太多运气。

谁能帮我理解我做错了什么?

0 投票
0 回答
62 浏览

android - 如何从图像按钮的现有(layerDrawable)背景“获取”上层?

我正在创建一个用于下棋的 android 应用程序。

我曾经layerDrawable显示 2 层背景(一层显示棋盘的正方形,另一层显示棋盘上的棋子)。

但问题是当我想从现有的方格中移动棋子时,我只需要上层(棋子)移动即可。

有什么办法可以“得到”上层。

我试过getBackground()方法,但它只返回一个drawable,而不是一个layerDrawable。

0 投票
2 回答
160 浏览

java - Kotlin - 将 Kotlin 方法转换为 Java 以用于 LayerDrawable 的问题

下面是从 Kotlin 代码函数转换的 java 函数。

我在该功能内的以下行遇到了麻烦。我很困惑如何在 Java 的 kotlin 行下面写:

那么,请任何人指导我们如何在java中编写这一行?

谢谢。

0 投票
1 回答
48 浏览

android - layer-list drawable 自动转换为 BitmapDrawable

我在 xml 中创建了一个可绘制 3 个位图可绘制对象的图层列表。当我尝试在 java 代码中检索该可绘制对象时,我收到一个BitmapDrawable对象,而不是一个LayerDrawable对象。

这是我的图层列表可绘制 XML 代码:

我在“Input_Field styleable xml”中声明了一个名为 iconBar 的属性,它应该包含对上述 LayerDrawable 的引用,这里是“Input_Field styleable xml”:

这是视图的 xml 代码,InputField它的属性 iconBar 持有对图层列表可绘制 iconbar_drawable 的引用:

我的java代码:

}

运行应用程序后,我收到以下运行时异常

谁能帮我理解这种奇怪的行为?

0 投票
1 回答
244 浏览

android - 图层可绘制/图层列表未在彼此之上绘制形状

我正在尝试创建一个带有黄色环的圆形按钮。我正在尝试将图层列表用作可绘制资源文件,并在背景中有圆形按钮,在顶部有环。

但是,无论我尝试什么,环都没有画在圆圈的顶部。只有圆圈出现。

当我尝试隔离环形时,我可以看到它。但是当我把它和圆圈结合起来时,我看到的只是圆圈。调整厚度或innerRadius 似乎没有帮助。

我不确定我在这里做错了什么。戒指是最后画的,所以它应该在上面。任何人都可以帮忙吗?

0 投票
0 回答
19 浏览

android - android中LayerDrawable的混合模式

我在 LayerDrawable 中有 2 个 Drawable(一个渐变和一个重复的图像),我想在使用 LayerDrawable 作为我的应用程序的背景之前更改其中一个 Drawable 的 porterduff 模式。

有什么办法可以改变 LayerDrawable 的混合模式吗?