创建自定义视图:如何扩展类并访问基类的私有成员变量?

时间:2011-08-07 15:56:11

标签: java android oop custom-view android-custom-view

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

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

目前,我的思维过程看起来像以下......

  1. 创建ShadowBitmapDrawable
  2. 的班级extends BitmapDrawable
  3. 在此课程中,以某种方式使用BitmapDrawable的{​​{1}}方法更改Paint的{​​{1}}对象。
  4. 在我的自定义Paint课程中,请致电setShadowLayer(),并将其传递给我ImageButton对象。
  5. 第2步是路障。如何更改setImageDrawable(Drawable d)的{​​{1}}对象?请注意,我添加了我的思维过程仅作为我在这个问题中的位置的指标。我对其他建议持开放态度。

    以下是一些参考资料:



    附:我有一种不好的感觉,我已经知道了我将要得到的答案,而且我不会喜欢它。我以为我会发布这个问题并希望最好。

1 个答案:

答案 0 :(得分:1)

  

如何更改BitmapDrawable的Paint对象?

BitmapDrawable克隆到您的项目中,将其重构到您自己的包中,使数据成员protected(或提供protected setter或其他内容),使用您修改后的{{1}并测试它的结果。