0

作为练习,我正在尝试扩展ImageButton以添加一些我认为有用的功能。其中一个尤其是卓尔影子。我已经用这个撞到了众所周知的墙。

在我看来,扩展类BitmapDrawable是必要的。此类包含一个Paint用于将位图绘制到屏幕的对象。如果我可以访问这个Paint对象......我所要做的就是调用它的setShadowLayer()方法......但是,唉,它是private. 有一种public方法getPaint()可以返回绘制对象,但除非有相应的setPaint()方法,否则对其进行任何修改都是无用的。(没有。)

目前,我的思考过程如下所示......

  1. 创建ShadowBitmapDrawableextends BitmapDrawable
  2. 在这个类中,以某种方式用'方法改变BitmapDrawable'Paint对象。PaintsetShadowLayer()
  3. 在我的自定义ImageButton类中,调用setImageDrawable(Drawable d)并将我的ShadowBitmapDrawable对象传递给它。

第2步是路障。我能做些什么来改变BitmapDrawable's 的Paint对象?请注意,我添加我的思考过程只是作为我在这个问题中所处位置的一个指标。我愿意接受其他建议。

以下是一些参考资料:



PS我有一种不好的感觉,我已经知道我会得到的答案,而且我不会喜欢它。想我还是会发布这个问题,并希望最好。

4

1 回答 1

1

如何更改 BitmapDrawable 的 Paint 对象?

克隆BitmapDrawable到您的项目中,将其重构到您自己的包中,制作数据成员protected(或提供一个protectedsetter 或其他东西),使用您的 modifiedBitmapDrawable并测试它。

于 2011-08-07T16:56:25.197 回答