问题标签 [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.
android - 如何以编程方式制作带有笔画的圆形可绘制对象?
背景
我试图有一个实心圆圈,具有一定颜色和宽度的笔画,以及里面的图像。
这可以很容易地在 XML 中完成,因此(这只是一个示例):
问题
我需要有上面的某些属性才能以编程方式更改,所以我不能使用 XML 文件,但思路还是一样的。
问题是,我找不到像在 XML 中那样在 OvalShape 可绘制对象上添加笔划的简单方法。我找不到执行此操作的功能。
我试过的
StackOverflow 上有一些解决方案,但我找不到一个效果很好的解决方案。我发现只有一个在这里,但它的笔划线正在被剪掉。
然而,我已经部分成功地解决了这个问题,即使用 XML 仅用于笔划本身:
stroke_drawable.xml
代码:
它可以工作,但不是完全以编程方式(笔画在 XML 中定义)。
问题
如何将代码更改为完全编程?
编辑:我尝试了这里的建议,但不是为背景添加额外的可绘制对象,因为我需要将所有这些都放在一个可绘制对象中,所以我使用了 LayerDrawable:
这可行,但由于某种原因,内部的可绘制对象(星形)被拉伸:
android - 显示一堆图像
给定:
- 位于资产文件夹中的许多图像(10 - 15)(如实践所示,更好的方法是在资产中保留高分辨率图像)
- Android UI线程(提前缓存drawables已经在后台线程中进行)
问题:
需要在绘制图像后平滑地显示所有图像,并且不阻塞UI 线程。
已经使用的方法:
- 动态创建所需数量,
ImageView
然后调用.setImageDrawable()
. 这需要很多时间,但最糟糕的是,即使在所有图像都绘制在它们的ImageView
. - 创建一个对象并将所需s
LayerDrawable
的数组作为参数传递。然后通过调用Drawable
把它放在一个也。此选项的行为与上述选项相同。ImageView
.setImageDrawable()
有没有办法解决这个问题?还是 Android 设备无法应对?
java - MenuItem.setIcon 在使用 BottomNavigationBar 时抛出 NullPointerException
我用底部导航栏替换了抽屉导航,发现我不能再使用动作视图,这就是为什么我使用 LayerDrawables 作为我的图标的原因。
现在我遇到了最后一个方法nav.setIcon(navMutate)
抛出 NullPointerException 的问题。
不是那个nav
或navMutate
为空,它在操作系统中更进一步,这是堆栈跟踪
我在这里使用这两个变量:
最后的LayerDrawable navMutate = (LayerDrawable) nav .getIcon().mutate();
navMutate .setDrawableByLayerId(R.id.ic_menu_upcoming_dot, notificationBullet);
不可能是因为其中任何一个都是空的,否则它会在那之前崩溃
它似乎只发生在低于 5 的 Android 版本上(所以 SDK 16-19)
android - Drawable 已经属于另一个所有者,但没有公开一个常量状态
错误:添加到 LayerDrawable 的可绘制对象无效!Drawable 已经属于另一个所有者,但不公开一个常量状态。
今天突然注意到这个错误,不知道是不是因为我刚刚将我的测试设备更新到了Android 8.0。错误消息清楚地表明在浮动操作按钮上设置波纹效果有问题,按下按钮时确实没有波纹效果。但是,我不确定是什么导致了这个问题。实际上,完全相同的错误连续抛出两次。任何帮助将非常感激!该应用程序的其余部分仍然正常运行,但该错误确实困扰着我。
ps minSdkVersion 是22,targetSdkVersion 和compiledSdkVersion 是27
在 MyActivity 中,第 117 行是数据绑定和设置内容视图。
这是完整的堆栈跟踪:
android - 如何在按钮中创建简单的可绘制图层
我试图更好地理解图层可绘制对象在按钮可绘制对象中的工作方式。
我正在尝试绘制 2 个简单的彩色框,一个没有插图,以便填充整个按钮可绘制区域。一个有一些插图。
然而,这根本不起作用。第一个问题是盒子没有填满任何区域。那是因为按钮可绘制对象没有预定义的大小吗?如果是这种情况,我尝试在盒子上手动设置边界,但也没有太多运气。
谁能帮我理解我做错了什么?
android - 如何从图像按钮的现有(layerDrawable)背景“获取”上层?
我正在创建一个用于下棋的 android 应用程序。
我曾经layerDrawable
显示 2 层背景(一层显示棋盘的正方形,另一层显示棋盘上的棋子)。
但问题是当我想从现有的方格中移动棋子时,我只需要上层(棋子)移动即可。
有什么办法可以“得到”上层。
我试过getBackground()
方法,但它只返回一个drawable,而不是一个layerDrawable。
java - Kotlin - 将 Kotlin 方法转换为 Java 以用于 LayerDrawable 的问题
下面是从 Kotlin 代码函数转换的 java 函数。
我在该功能内的以下行遇到了麻烦。我很困惑如何在 Java 的 kotlin 行下面写:
那么,请任何人指导我们如何在java中编写这一行?
谢谢。
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代码:
}
运行应用程序后,我收到以下运行时异常
谁能帮我理解这种奇怪的行为?
android - 图层可绘制/图层列表未在彼此之上绘制形状
我正在尝试创建一个带有黄色环的圆形按钮。我正在尝试将图层列表用作可绘制资源文件,并在背景中有圆形按钮,在顶部有环。
但是,无论我尝试什么,环都没有画在圆圈的顶部。只有圆圈出现。
当我尝试隔离环形时,我可以看到它。但是当我把它和圆圈结合起来时,我看到的只是圆圈。调整厚度或innerRadius 似乎没有帮助。
我不确定我在这里做错了什么。戒指是最后画的,所以它应该在上面。任何人都可以帮忙吗?
android - android中LayerDrawable的混合模式
我在 LayerDrawable 中有 2 个 Drawable(一个渐变和一个重复的图像),我想在使用 LayerDrawable 作为我的应用程序的背景之前更改其中一个 Drawable 的 porterduff 模式。
有什么办法可以改变 LayerDrawable 的混合模式吗?