问题标签 [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 回答
1561 浏览

android - LayerDrawable 作为背景可绘制在 minSdkVersion=15 或更低时不起作用

虽然我找不到任何 SDK 版本限制LayerDrawable在 API 级别 1 中添加),但我用作背景的版本取决于 minSdkVersion:如果它是 15 或更低,则背景是完全黑色的,如果是19 或更高版本 (KitKat<),图层按预期显示。

我正在以编程方式替换图层列表中的第一项。这是我使用LayerDrawable该类的方式(尽管应该没有任何问题):

mylayerdrawable 如下所示:

bgDrwbl在调试时,我注意到minSdkVersion=15 与 19 相比缺少以下成员:

  • LayerDrawable.mLayerState.mAutoMirrored
  • LayerDrawable.mLayoutDirection(基类成员Drawable:)

如果有人像我一样使用 LayerDrawable,我不知道它们中的任何一个是否至关重要(?),但我既没有收到任何警告,也没有找到任何关于在LayerDrawable不同 SDK 版本中使用 's 的建议。你有什么提示吗?

0 投票
0 回答
765 浏览

android - Android 开发 - 如何将 LayerDrawable 转换为 Drawable 或 Bitmap

我正在编写一个简单的应用程序,它需要两个图像 1)照片和 2)过滤器(图像文件),然后过滤器将应用于照片。但我也想在图像重叠后将图像保存在内部存储中。正如您在下面的代码中看到的,在最后第二行中,我创建了位图对象filteredPhoto,因此它可以用于保存图像,但由于不可转换类型,它不能被引用。

有两种方式,

1)LayerDrawable对象转换Drawable为位图对象并稍后将其引用到位图对象(通过强制转换)

2)如果可能,LayerDrawable直接转换为。Bitmap

谁能解释我如何做到这一点?

注意:其他人可能已提出此问题,但没有人正确回答。他们中的大多数人说使用Canvas,但我找不到如何Canvas帮助我解决我的问题,所以请不要将我的问题标记为重复。

代码 :

0 投票
0 回答
172 浏览

android-studio - 保存图层可绘制时面临错误

我是初学者,我正在尝试创建一个类似 retrica 的应用程序或其他类似的应用程序。但我面临一些问题,比如从 imageview 保存图像。我正在使用 layerdrawable 来实现框架、clip_arts 和过滤器等。我遇到了错误

08-12 22:01:55.812 9469-9469/com.zaibatsu.usman.camerashop D/我的错误 :: java.lang.NullPointerException: 尝试调用虚拟方法'void android.graphics.drawable.LayerDrawable.setBounds(int, int, int, int)' 在空对象引用上

实际上我正在将 layerdrwable 转换为位图图像,所以我想将编辑后的图像保存到设备内存中。这是我的代码...

公共类显示扩展活动{

}

0 投票
0 回答
66 浏览

android - 以私有方法访问菜单

我正在为 中的图标添加徽章Toolbar。我曾经onCreateOptionMenu为工具栏中的图标充气。我需要在单击按钮时使用菜单LayerDrawable来为图标添加徽章。我发现你可以像这样访问菜单。但是当我像这样使用菜单时,图标不会更新,它会以这样的方式重新创建,从而变成 2 个图标。一个有徽章,另一个没有。如果我再次单击该按钮,则会显示 3 个图标。有没有办法正确地做到这一点?

0 投票
1 回答
552 浏览

android - LayerDrawable 一起变化

我有一个魔术问题。LayerDrawable 的所有实例一起更改。我有几个典型的观点。所以为了完成我的任务,我决定“我将使用“复合视图”。我遇到了一个问题:
当我改变一个图层可绘制的可见性<所有的变化。

}

和 LayerDrawable 的 xml

布局

我将不胜感激任何帮助。

0 投票
2 回答
1304 浏览

android - Android 半透明状态栏但非半透明导航栏(如果存在)

我正在尝试使用这篇文章为 android 应用程序创建启动画面:Splash Screens the Right Way。正如文章所说,我创建了具有两层的 LayerDrawable:背景位图和徽标(也是位图)。例如,徽标需要位于屏幕底部,缩进 32dp。这是我的可绘制对象:

android:windowBackground我在我的启动活动主题中将这个可绘制对象指定为参数。我还希望在支持此功能(API >=19)的设备上显示启动画面时有透明的状态栏,所以我为不同的 android 版本创建了两个资源文件,在 values-v19\styles.xml 中我指出标志android:windowTranslucentStatus为真的。这是我的values/styles.xmlvalues-v19/styles.xml

值/样式.xml


values-v19/styles.xml

但是在一些带有 Soft NavigationBar 的 Android 设备上,我的标志被它重叠了。 我试图将标志指向错误但没有成功。由 NavigationBar 重叠的徽标
android:windowTranslucentNavigation

有什么方法可以使 Android Soft NavigationBar 与透明状态栏一起透明,或者我需要在我的启动活动的 onCreate 方法中检测 Soft NavigationBar 的可用性,并通过将徽标的底部缩进添加到 NavigationBar 的高度来更新我的 LayerDrawable?

谢谢。

0 投票
0 回答
312 浏览

android - < API 级别 23 中的 LayerDrawable addLayer

有没有办法LayerDrawable在 API < 23 上添加一个层?我必须LayerDrawable使用构造函数创建一个新层吗?

0 投票
1 回答
1262 浏览

android - 来自 LayerDrawable 的异常

我有一个使用 android 支持库版本的 android 应用程序,23.2.1一切正常。但是,我已经将 android 支持库版本更新到25.2.0昨天,并意识到一些用户正在得到这个异常(通过 Fabric crashlytics),但我无法重现它。

这是崩溃日志:

它似乎与菜单视图有关。菜单选项的布局是:

layerlist_menu_notification 布局是一个带有徽章的图标:

知道哪里出了问题吗?

0 投票
1 回答
655 浏览

android - 以编程方式设置 AppCompatImageView 的前景 Android API 19

我目前正在创建一个菜单,允许用户AppCompatImageView在 a 中选择一个,GridLayout并通过在图像的前景放置一个复选标记图标来显示该视图已被选中。在 api 23 中,我可以通过简单地调用来做到这一点,View.setForeground()但在较低的 api 中,该方法不存在。我可以使用某种解决方法吗?

我试过使用 aLayerDrawable但是如果我设置的图像android:src=高度不同,复选标记图标会被挤压。这是现在的代码:

这就是最终的样子:

结果

当我希望支票是方形纵横比时。我想避免重做可绘制背景以使其成为方形纵横比,因为我还有大量其他可绘制对象也必须重做。

0 投票
2 回答
9584 浏览

android - 如何在Android中动态合并两个Drawable?

所以我有两个不同Drawables的,我需要在运行时合并并得到一个Drawable。我希望第一个Drawable在顶部,另一个在底部。我遇到了LayerDrawable,它看起来正是我需要的,但我在尝试安排Drawables.

所以我有一个ImageButton48x48 的尺寸dp,这就是决赛Drawable的去向。第一个Drawable是加号按钮 (20x20 dp),第二个是dp加号按钮下方的一个小点 (4x4 )。

加号按钮Drawable是使用字体字形加载的。我正在Drawable使用这个 xml 片段创建点按钮:

我的第一种方法是将两者都添加Drawables到 中LayerDrawable,但是当我这样做时,xml 中指定的点的宽度/高度属性将被忽略,并且它会延伸以覆盖加号图标。

上面的结果是:



我尝试的第二种方法是使用setLayerInsetto try and position the two Drawables.

上面的代码片段最终将点放置在正确的位置,但它也开始影响加号按钮的位置和大小,最终看起来像这样:
在此处输入图像描述

但我真正想要的是在中间有加号按钮,在ImageButton它下面有加号图标。有谁知道我哪里出错了,我怎样才能正确定位两个drawable?

PS:我的应用程序支持 API 15+,所以我不能使用来自LayerDrawableAPI 的一堆方法,比如setLayerGravity`setPaddingMode 等。