android - 使用 drawBitmap 在 Canvas 上绘制 9-patch 图像

标签 android

在自定义 View 上使用 9-patch 图像资源的正确方法是什么?

我这样做:

background = BitmapFactory.decodeResource(getResources(), R.drawable.fundo_bookshelf);
canvas.drawBitmap(background, null, new Rect(0, y, width, y+backgroundHeight), null);

fundo_bookshelf 是一个合适的 9-patch 图片,保存为 fundo_bookshelf.9.png,见下图:

fundo_bookshelf

但是当使用 drawBitmap 时,整个图像被拉伸(stretch),而不是只有顶部黑色像素的部分,如这个截图所示: strechted image

最佳答案

是这样的吗?

NinePatchDrawable bg =  (NinePatchDrawable) resources.getDrawable(id);
if (bg != null) {
  bg.setBounds(0, 0, getWidth(), getHeight());
  bg.draw(canvas);
  }

(抱歉,我没有将其改编为您的代码,这是我自己的直接剪切/粘贴,但希望足以继续)

关于android - 使用 drawBitmap 在 Canvas 上绘制 9-patch 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708209/

相关文章:

android - 如何创建 HTML5 的 APK 以在 Android 上运行

android - 执行整个代码后显示 Activity 屏幕

java - 在 Android 中解析 double 时出错

java - 在用户触摸屏幕的地方放置对话框

java - Android:如何提高 tesseract ocr 检索到的图像中的数字?

android - 无法从MIC读取数据

android - 不调整父布局大小的背景图像

android - 如何在设置 View 的 alpha 之前创建 1 秒的延迟?

java - 意外字符 $ - Java 绑定(bind)错误

Android:来自资源的 getString() 会丢失字符串中的所有标签