问题标签 [android-drawable]

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 回答
1307 浏览

android - Android 上未清除的 StateListDrawable 行为

我尝试使用时有很奇怪的现象StateListDrawable

我有一个扩展视图,ImageViewStateListDrawable在其构造函数中使用。我有 2 个代码片段来展示我的问题。第一个:

第二个:

}

(我知道这段代码没有多大意义——我想简化问题以使问题更清楚)。问题是在第一个sinppet 上一切正常——我在drawable 上设置了一个滤色器并显示出来。但是在第二个片段中,StateListDrawable实例以某种方式对过滤器产生影响,并且正在显示原始可绘制对象,即使我从未ImageView通过调用将其连接到setImageDrawable(states).

有人可以向我解释发生了什么吗?我的目标是StateListDrawable为不同的状态使用相同的可绘制对象,如下所示:

(我需要通过代码来完成,因为我的drawable应该从网络动态加载,而不是作为资源)

0 投票
4 回答
3311 浏览

android - Android的渐变drawables:Eclipse中的截图质量很差

我正在使用如下可绘制的渐变背景:

这会导致模拟器上出现带状渐变,当我截取模拟器的屏幕截图(使用 Eclipse)时,结果更差:

在此处输入图像描述

为什么?以及如何解决这个问题?尽管我android:dither="true"在可绘制对象的 XML 中使用并将其设置在Activity's中onCreate()

顺便说一句,蓝色部分是本机操作栏,灰色渐变是ListView带有背景可绘制的行。

0 投票
1 回答
683 浏览

android - YuvImage 到 Drawable

我有 YUV 格式的 byte[] 数据,我想创建一个 Drawable。

要做的很长的路是将其转换为 RGB -> Bitmap -> BitmapDrawable。

一种更简单的方法是创建 YuvImage,但是是否可以在不使用将其压缩为 jpeg 的情况下从中创建一个 Drawable?

0 投票
1 回答
241 浏览

android - 制作一个看起来像按钮的形状

我确实有一组按钮,我正在使用选择器形状对其进行自定义。这是我到目前为止的代码和图像:

CODE-bgbtn.xml

结果:

在此处输入图像描述

我只为第一个按钮应用了样式,你可以看到它看起来太平了。如何让它看起来更像一个按钮?

0 投票
1 回答
1042 浏览

android - Android以编程方式创建可绘制边框

我会创建一个可绘制对象作为我的列表项的背景。我正在尝试在 xml 中绘制类似这样的内容:

所以我需要将边界绘制到两侧,顶部和左侧,并在右下角绘制一个“L”。创建顶部和左侧边框没有问题,但我无法想象如何在右下角创建 L。PS:L的尺寸应该是固定的,并且与drawable的尺寸无关。谢谢

0 投票
1 回答
1221 浏览

android - Drawable draw() 调用未在各种设备上同时执行

我的操作栏有一个自定义可绘制对象,它扩展了GradientDrawable. 我drawable本身绘制的正是我想要的,我的问题似乎是它何时绘制。我在 Nexus 设备上开发它,它运行良好,完全符合预期,但是,当我在非 Nexus 设备上运行它时,它无法正常运行。我将其追溯到draw(Canvas canvas)呼叫的呼叫速度与 Nexus 设备的呼叫速度不同。我添加了一行代码,在调整其设置后用相同的可绘制对象替换操作栏可绘制对象,这使其在所有设备上都可以使用,但我不喜欢在用户拖动屏幕时不断重置可绘制对象。这根本不是问题吗?制造商真的可以对绘图系统进行那么多修改吗?有任何想法吗?设备结果和代码如下所示。

drawable 的 draw() 方法

设置参数

不需要我打电话的设备setBackgroundDrawable()*

  • 银河连结 (4.2.1)
  • 连结 10 (4.2.1)
  • 连结 7 (4.2.1)
  • 连结 S (4.2)
  • 摩托罗拉 Xoom (4.0.4)

需要我打电话的设备setBackgroundDrawable()*

  • 变压器 Prime (4.1.1)
  • Galaxy Tab 7.0+ (4.0.4)
  • 宏碁 A500 (4.0.3)

如果没有重置可绘制对象的开销,我不太介意,对我来说,Nexus 设备都在 invalidateSelf() 之后绘制而制造商设备没有绘制,这对我来说似乎很奇怪。有人有意见吗?

0 投票
4 回答
247 浏览

android - Android OutOfMemory 异常 - 还有另一种方法可以满足我的需求吗?

我的应用程序正在加载一个大图像(房屋平面图),然后在图像上绘制触摸反应对象(家具、灯具等)。我的应用程序包含一个基本图像文件,但对象来自我数据库中的坐标。

我已经在多次迭代中成功部署了该应用程序,但现在我需要使用更大的基本映像,并且在许多设备上BitmapFactory导致OutOfMemory异常(旧设备和新设备;任何小于 32MB 堆的东西似乎都崩溃了)。我已经阅读了关于 SO 的 157 OOM 问题,但恐怕他们似乎都指向的链接对我没有帮助,因为分辨率/缩放对应用程序的功能至关重要。

我尝试在加载之前测试设备的可用内存,但结果充其量是参差不齐(一些设备,如 Galaxy S3 报告大量堆但仍然崩溃)。我也尝试过降低分辨率,但根据上述测试将图像缩小到安全尺寸时,图像变得无法使用。

有没有另一种方法可以在不使用位图的情况下实现这种设计?我需要:

  • 加载大型基础图像
  • 在基础图像上创建可点击的形状,保持它们相对于基础图像的位置/比例
  • 奖励:在我的应用程序的 iOS 版本中,我可以进行 SVG 样式的文本缩放,因此小对象上的长标签将保留在对象内部,而不是在地图上运行(并且在图像缩放之前将不可见)。在 android 中复制它会让我成为一个快乐的代码猴子。

如果需要,我可以发布代码,但你们之前都看过(几乎所有代码都来自 SO)。

提前感谢您的阅读,以及您可以提供的任何帮助。

0 投票
1 回答
1436 浏览

android - Android 4.2 9-patch 背景绘制与旧操作系统版本不同

我有一个带有 Android 4.2.1 的 Nexus 7,我注意到在我的应用程序中,我用于某些线性布局的背景图像绘制不正确。对于具有旧版本 Android 操作系统的其他设备,可以正确绘制 9-patch 背景,但对于此设备,边界线在不应拉伸时被拉伸。

正确(Evo 4G v2.3.5):http: //i.imgur.com/WDTNr.png

不正确(N7 v4.2.1):http: //i.imgur.com/HntMY.png

知道是什么原因造成的吗?如果没有,是否有任何其他方法可以在不使用 9-patch 图像的情况下在这些视图上获得黑色边框?

编辑

9 补丁文件:http: //i.imgur.com/LDoBE.png

编辑工具中的 9 补丁:http: //i.imgur.com/UoydG.png

使用它的布局 xml 部分(leftbordergraybkg):

0 投票
2 回答
1965 浏览

android - Android inset 透明drawable

所以我有一个如下所示的PNG。图像中的白色内部是透明的。

我的问题是该图像对于 Android 设备上的不同尺寸屏幕并不能真正扩展。

我想知道如何在代码中或者最好是 xml 中做到这一点。基本上我正在寻找一个带有透明圆形插图的灰色正方形。

此外,灰色的内边框也有很好的效果,这在代码中可能吗?

我知道如何做逆向(带圆角的位图),但我该怎么做呢?任何想法表示赞赏,谢谢。

容器

编辑:

所以,我唯一尝试过的是android:scaleType="centerCrop"

0 投票
3 回答
151 浏览

android - 如何自动构建“精简版”版本

我制作了一个应用程序,该应用程序包含大量不同按钮的图形。每个按钮的所有图形都以drawable-xhdpidrawable-hdpidrawable-mdpi的比例复制drawable-ldpi

前两个目录中的图形量约为 3.5MB,而应用程序总共约为 7.5MB。

显然,要求拥有低端智能手机的人下载并用完全无用的 3.5MB 图形填充他们的内存是很疯狂的,所以我决定lite为这些人制作一个“ ”版本。

我想要一个常数,比如

这样当我将其设置为 true 时,构建会自动排除xhdpihdpi图形。

现在我唯一的解决方案是手动移走这两个目录,构建精简版,放回目录并构建完整版本。显然这不是最优的。