我试图让应用程序每隔半秒在画布上绘制一些内容,但SurfaceHolder.getSurface().isValid()返回false,当我调用SurfaceHolder.lockCanvas()时,它返回null。
根据this SO question,我应该使用SurfaceHolder.Callback.surfaceCreated,但是从来没有创建过曲面。
我的主Activity中的onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
ChartPainter p = new ChartPainter(this);
}和我的ChartPainter.java的一部分
public ChartPainter(Context context) {
super(context);
holder = getHolder();
final boolean a[] = new boolean[1];
a[0] = false;
holder.addCallback(new Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
a[0] = true;
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
});
} [...]//more omitted code here如何为SurfaceHolder创建曲面
发布于 2017-09-05 14:43:12
ChartPainter是否扩展了SurfaceView?
注意: SurfaceHolder通常与SurfaceView一起使用。当活动转到前台并且其SurfaceView即将呈现时,WindowManager将请求SurfaceFlinger创建一个新的图面。然后调用SurfaceHolder的surfaceCreated()。
https://stackoverflow.com/questions/28140401
复制相似问题