如题。
SurfaceView是继承自View的类,View类中有一个onDraw函数,如果是继承自View的类是可以重写onDraw函数的。
那么为什么继承自View的子类SurfaceView的类不能重写onDraw函数呢?即使写了onDraw函数,也不会自动调用,需要自己调用。
SurfaceView是继承自View的类,View类中有一个onDraw函数,如果是继承自View的类是可以重写onDraw函数的。
那么为什么继承自View的子类SurfaceView的类不能重写onDraw函数呢?即使写了onDraw函数,也不会自动调用,需要自己调用。
解决方案 »
- android 视频播放器中onErrorListener()哪些情况下会触发
- SD卡的写入问题
- android 纯代码TableLayout布局[JAVA]
- 关于graphical layout 效果显示不出来的问题。,求解。!!!
- adroid启动项目是报错:Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE怎么回事
- 怎样在AppWidget的环境下创建ProgressDialog?
- 要开发一个android项目,以android为客户端,pc为服务器端,如果实现通讯交互?
- android6.0 camera2 录像 MediaRecorder.getsurface 失败
- 如果在一个方法里销毁一个activity
- 安卓空指针问题,实在找不到,求大佬指点
- android怎么获取当前动态壁纸
- Win7 32位下搭建环境问题,求解
protected 表明被它修饰的成员变量为保护类型,在同一个包里和 public 类型是一样的,也是能够访问到的。但是如果在不同包里的 protected 类型的成员变量就只能通过子类来访问,这个修饰符是区别于其他的修饰符的。
所以SurfaceView可以访问。而SurfaceView里并没有重写onDraw,
所以View子类的子类可以重写onDraw,但不能访问,所以像你说的:即使写了onDraw函数,也不会自动调用,需要自己调用。
public void draw (Canvas canvas)Since: API Level 1
Manually render this view (and all of its children) to the given Canvas. The view must have already done a full layout before this function is called. When implementing a view, do not override this method; instead, you should implement onDraw(Canvas).
Parameters
canvas The Canvas to which the View is rendered.虽然没用过SurfaceView,但是按照sdk的说明,应该是调用draw 以此来进入到ondraw的回调中。
没注意到这么细致的地方,虽然也看到了View中onDraw是protected。
1.android-sdk-windows\doc\index.html
2.选择Reference选项卡
3.点击左侧上android.view包,左侧下在class里找到SurfaceView
4.点击SurfaceView里面的public void draw (Canvas canvas)