用drawBitmap在画布上绘制9补丁图像

问题描述

| 在自定义视图上使用9补丁图像资源的正确方法是什么? 我正在这样做:
background = BitmapFactory.decodeResource(getResources(),R.drawable.fundo_bookshelf);
canvas.drawBitmap(background,null,new Rect(0,y,width,y+backgroundHeight),null);
fundo_bookshelf是一个正确的9补丁图像,另存为fundo_bookshelf.9.png,如下所示: 但是,当使用drawBitmap时,整个图像将被拉伸,而不是仅拉伸顶部具有黑色像素的部分,如以下屏幕截图所示:

解决方法

像这样吗
NinePatchDrawable bg =  (NinePatchDrawable) resources.getDrawable(id);
if (bg != null) {
  bg.setBounds(0,getWidth(),getHeight());
  bg.draw(canvas);
  }
(对不起,我没有将其适应您的代码,这是我自己的直接剪切/粘贴,但希望能够继续进行下去)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...