作为练习,我正在尝试扩展ImageButton
以添加一些我认为有用的功能。其中一个尤其是卓尔影子。我已经用这个撞到了众所周知的墙。
在我看来,扩展类BitmapDrawable
是必要的。此类包含一个Paint
用于将位图绘制到屏幕的对象。如果我可以访问这个Paint
对象......我所要做的就是调用它的setShadowLayer()
方法......但是,唉,它是private
. 有一种public
方法getPaint()
可以返回绘制对象,但除非有相应的setPaint()
方法,否则对其进行任何修改都是无用的。(没有。)
目前,我的思考过程如下所示......
- 创建
ShadowBitmapDrawable
类extends BitmapDrawable
- 在这个类中,以某种方式用'方法改变
BitmapDrawable
'Paint
对象。Paint
setShadowLayer()
- 在我的自定义
ImageButton
类中,调用setImageDrawable(Drawable d)
并将我的ShadowBitmapDrawable
对象传递给它。
第2步是路障。我能做些什么来改变BitmapDrawable
's 的Paint
对象?请注意,我添加我的思考过程只是作为我在这个问题中所处位置的一个指标。我愿意接受其他建议。
以下是一些参考资料:
- BitmapDrawable 源(扩展
Drawable
为绘制位图) - ImageView 源(的基类
ImageButton
) - 可绘制源
PS我有一种不好的感觉,我已经知道我会得到的答案,而且我不会喜欢它。想我还是会发布这个问题,并希望最好。