作为练习,我试图扩展ImageButton
以添加一些我认为有用的功能。尤其是一个卓尔影子。我已经用这个砸到了众所周知的墙上。
在我看来,扩展BitmapDrawable
的课程是必要的。此类包含用于将位图绘制到屏幕的Paint
对象。如果我有权访问这个Paint
对象......我只需要调用它setShadowLayer()
方法......但是,唉,它是private
。有一个public
方法,getPaint()
将返回绘制对象,但除非有相应的setPaint()
方法,否则对它的任何修改都将毫无用处。 (没有。)
目前,我的思维过程看起来像以下......
ShadowBitmapDrawable
extends BitmapDrawable
BitmapDrawable
的{{1}}方法更改Paint
的{{1}}对象。Paint
课程中,请致电setShadowLayer()
,并将其传递给我ImageButton
对象。第2步是路障。如何更改setImageDrawable(Drawable d)
的{{1}}对象?请注意,我添加了我的思维过程仅作为我在这个问题中的位置的指标。我对其他建议持开放态度。
以下是一些参考资料:
ShadowBitmapDrawable
以绘制位图)BitmapDrawable
)
附:我有一种不好的感觉,我已经知道了我将要得到的答案,而且我不会喜欢它。我以为我会发布这个问题并希望最好。
答案 0 :(得分:1)
如何更改BitmapDrawable的Paint对象?
将BitmapDrawable
克隆到您的项目中,将其重构到您自己的包中,使数据成员protected
(或提供protected
setter或其他内容),使用您修改后的{{1}并测试它的结果。