5

我正在尝试以编程方式创建九个补丁图像。我已经尝试过Griffey 的方法,但似乎无法让它发挥作用。关于如何使用该类的信息很少。我相信我错误地导入了位图。如果有人知道如何使它工作或知道更好的方法,我将非常感谢您的帮助。

我的代码:

// Dynamically create the 9patch image and apply it to a LinearLayout
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button);
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null);

llcode.setBackgroundDrawable(np);

// The following code using the actual 9patch image: white_button_np.9.png
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml);
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np));

此屏幕截图显示了顶部的编程方法和底部使用 android 工具的典型 9patch 方法。

在此处输入图像描述

转换为 9patch 之前的原始图像。

在此处输入图像描述

4

2 回答 2

0

解决方案在这里:https ://stackoverflow.com/a/16676419/238845 。我已经在 API 级别 10 模拟器上成功测试了它。

于 2014-01-20T13:14:59.313 回答
0

您是否尝试过强制解码器配置以确保有 alpha 通道?

尝试将inPreferredConfig设置为ARGB_8888

于 2013-01-22T12:00:03.547 回答