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