问题标签 [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.
android - Android 上未清除的 StateListDrawable 行为
我尝试使用时有很奇怪的现象StateListDrawable
:
我有一个扩展视图,ImageView
我StateListDrawable
在其构造函数中使用。我有 2 个代码片段来展示我的问题。第一个:
第二个:
}
(我知道这段代码没有多大意义——我想简化问题以使问题更清楚)。问题是在第一个sinppet 上一切正常——我在drawable 上设置了一个滤色器并显示出来。但是在第二个片段中,StateListDrawable
实例以某种方式对过滤器产生影响,并且正在显示原始可绘制对象,即使我从未ImageView
通过调用将其连接到setImageDrawable(states)
.
有人可以向我解释发生了什么吗?我的目标是StateListDrawable
为不同的状态使用相同的可绘制对象,如下所示:
(我需要通过代码来完成,因为我的drawable应该从网络动态加载,而不是作为资源)
android - Android的渐变drawables:Eclipse中的截图质量很差
我正在使用如下可绘制的渐变背景:
这会导致模拟器上出现带状渐变,当我截取模拟器的屏幕截图(使用 Eclipse)时,结果更差:
为什么?以及如何解决这个问题?尽管我android:dither="true"
在可绘制对象的 XML 中使用并将其设置在Activity
's中onCreate()
:
顺便说一句,蓝色部分是本机操作栏,灰色渐变是ListView
带有背景可绘制的行。
android - YuvImage 到 Drawable
我有 YUV 格式的 byte[] 数据,我想创建一个 Drawable。
要做的很长的路是将其转换为 RGB -> Bitmap -> BitmapDrawable。
一种更简单的方法是创建 YuvImage,但是是否可以在不使用将其压缩为 jpeg 的情况下从中创建一个 Drawable?
android - 制作一个看起来像按钮的形状
我确实有一组按钮,我正在使用选择器形状对其进行自定义。这是我到目前为止的代码和图像:
CODE-bgbtn.xml
结果:
我只为第一个按钮应用了样式,你可以看到它看起来太平了。如何让它看起来更像一个按钮?
android - Android以编程方式创建可绘制边框
我会创建一个可绘制对象作为我的列表项的背景。我正在尝试在 xml 中绘制类似这样的内容:
所以我需要将边界绘制到两侧,顶部和左侧,并在右下角绘制一个“L”。创建顶部和左侧边框没有问题,但我无法想象如何在右下角创建 L。PS:L的尺寸应该是固定的,并且与drawable的尺寸无关。谢谢
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() 之后绘制而制造商设备没有绘制,这对我来说似乎很奇怪。有人有意见吗?
android - Android OutOfMemory 异常 - 还有另一种方法可以满足我的需求吗?
我的应用程序正在加载一个大图像(房屋平面图),然后在图像上绘制触摸反应对象(家具、灯具等)。我的应用程序包含一个基本图像文件,但对象来自我数据库中的坐标。
我已经在多次迭代中成功部署了该应用程序,但现在我需要使用更大的基本映像,并且在许多设备上BitmapFactory
导致OutOfMemory
异常(旧设备和新设备;任何小于 32MB 堆的东西似乎都崩溃了)。我已经阅读了关于 SO 的 157 OOM 问题,但恐怕他们似乎都指向的链接对我没有帮助,因为分辨率/缩放对应用程序的功能至关重要。
我尝试在加载之前测试设备的可用内存,但结果充其量是参差不齐(一些设备,如 Galaxy S3 报告大量堆但仍然崩溃)。我也尝试过降低分辨率,但根据上述测试将图像缩小到安全尺寸时,图像变得无法使用。
有没有另一种方法可以在不使用位图的情况下实现这种设计?我需要:
- 加载大型基础图像
- 在基础图像上创建可点击的形状,保持它们相对于基础图像的位置/比例
- 奖励:在我的应用程序的 iOS 版本中,我可以进行 SVG 样式的文本缩放,因此小对象上的长标签将保留在对象内部,而不是在地图上运行(并且在图像缩放之前将不可见)。在 android 中复制它会让我成为一个快乐的代码猴子。
如果需要,我可以发布代码,但你们之前都看过(几乎所有代码都来自 SO)。
提前感谢您的阅读,以及您可以提供的任何帮助。
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):
android - Android inset 透明drawable
所以我有一个如下所示的PNG。图像中的白色内部是透明的。
我的问题是该图像对于 Android 设备上的不同尺寸屏幕并不能真正扩展。
我想知道如何在代码中或者最好是 xml 中做到这一点。基本上我正在寻找一个带有透明圆形插图的灰色正方形。
此外,灰色的内边框也有很好的效果,这在代码中可能吗?
我知道如何做逆向(带圆角的位图),但我该怎么做呢?任何想法表示赞赏,谢谢。
编辑:
所以,我唯一尝试过的是android:scaleType="centerCrop"
android - 如何自动构建“精简版”版本
我制作了一个应用程序,该应用程序包含大量不同按钮的图形。每个按钮的所有图形都以drawable-xhdpi
、drawable-hdpi
和drawable-mdpi
的比例复制drawable-ldpi
。
前两个目录中的图形量约为 3.5MB,而应用程序总共约为 7.5MB。
显然,要求拥有低端智能手机的人下载并用完全无用的 3.5MB 图形填充他们的内存是很疯狂的,所以我决定lite
为这些人制作一个“ ”版本。
我想要一个常数,比如
这样当我将其设置为 true 时,构建会自动排除xhdpi
和hdpi
图形。
现在我唯一的解决方案是手动移走这两个目录,构建精简版,放回目录并构建完整版本。显然这不是最优的。