我是android新手。 我正在使用android画布,我想知道当它们的函数defination在android源代码中为空时,SurfaceView类函数是如何工作的。这里是android表面视图类源代码
package android.view;
import com.android.layoutlib.bridge.MockView;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
public class SurfaceView extends MockView {
public SurfaceView(Context context) {
this(context, null);
}
public SurfaceView(Context context, AttributeSet attrs) {
this(context, attrs , 0);
}
public SurfaceView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SurfaceHolder getHolder() {
return mSurfaceHolder;
}
private SurfaceHolder mSurfaceHolder = new SurfaceHolder() {
@Override
public boolean isCreating() {
return false;
}
@Override
public void addCallback(Callback callback) {
}
@Override
public void removeCallback(Callback callback) {
}
@Override
public void setFixedSize(int width, int height) {
}
@Override
public void setSizeFromLayout() {
}
@Override
public void setFormat(int format) {
}
@Override
public void setType(int type) {
}
@Override
public void setKeepScreenOn(boolean screenOn) {
}
@Override
public Canvas lockCanvas() {
return null;
}
@Override
public Canvas lockCanvas(Rect dirty) {
return null;
}
@Override
public void unlockCanvasAndPost(Canvas canvas) {
}
@Override
public Surface getSurface() {
return null;
}
@Override
public Rect getSurfaceFrame() {
return null;
}
};
}
所以当我们写
时这是如何工作的canvas c = holder.lockCanvas(null);
或
holder.unlockCanvasAndPost(c);
当我们在源代码中没有任何东西要处理时...我的意思是完成工作的代码在哪里。如果帮我找到它..
答案 0 :(得分:0)
完整的SurfaceView源代码位于Github上的AOSP代码中: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/SurfaceView.java
答案 1 :(得分:0)
看来您正在查看存根库的源代码。
对于SDK,会生成一个库,其中包含所有公共类,字段和方法的条目,但没有实现。您针对该应用而不是实际库构建应用程序,以便在尝试使用不属于官方Android API的类,字段或方法时构建失败。
如果您查看实际的source for SurfaceView,您会看到setWindowType()
(第415行)在javadoc中有@hide
的方法。尽管该方法在Java语言意义上是“公共的”,但它不是已发布API的一部分,因此被排除在存根库之外。