解决方案 »
- 腾讯安卓新闻客户端的菜单是怎么实现的?
- ListView 如何动态刷新 删除 添加
- 两个android小问题烦人啊,求指教
- android sqlite数据库无法打开
- 编译UBOOT出现问题 路径没有错 为什么还是找不到文件。求大神
- opengl中触摸移动,先获得开始的坐标,怎样获得移动后的目标坐标呢!!
- android中不同的listview可以用同一个adapter吗?
- 求高手帮忙,如何获得正在播放的音乐文件名
- 自定义Adapter中的checkbox取不到
- Silding左右滑动与ViewPager冲突
- 能不能在mediaPlayer.setOnCompletionListener中release 这个mediaPlayer对象自身
- 求教~~几个问题~~
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class TestSurfaceViewActivity extends Activity {
SurfaceView sfv;
SurfaceHolder sfh;
Canvas ca1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); sfv = (SurfaceView) this.findViewById(R.id.SurfaceView01);
sfh = sfv.getHolder();
carr1 car1 =new carr1(this);
sfh.addCallback(car1);
ca1=sfh.lockCanvas(null);//此句报错,返回null……
//也使用ca1=sfh.lockCanvas(new Rect(0,0,200,200));也返回null
Paint mPaint = new Paint();
mPaint.setColor(Color.GREEN);
canvas.drawLine(0,0,200,200,mPaint);
srf.unlockCanvasAndPost(ca1);
}
}
mSurfaceHolder = this.getHolder();
// 添加回调 函数
// 注意这里这句 mSurfaceHolder.addCallback(this)这句执行完了之后
// 马上就会回调 surfaceCreated方法了 然后开启线程 执行绘图方法这里这个执行顺序要搞清楚
mSurfaceHolder.addCallback(this);
protected void Draw() { // 锁定画布,得到canvas 用SurfaceHolder对象的lockCanvas方法
sCanvas = mSurfaceHolder.lockCanvas();
if (mSurfaceHolder == null || sCanvas == null) {
return;
}
UpdateGame();
RenderGame();
// 绘制后解锁,绘制后必须解锁才能显示
mSurfaceHolder.unlockCanvasAndPost(sCanvas);
}
(mSurfaceHolder = this.getHolder();//this指明此类是surfaceview的子类
surfaceHolder.addCallback(this)//这句的this指明此类继承surfaceHolder.addCallback接口)但我想问的是,如果我想使用 surfaceview 标准件,我在xml中定义<surfaceview></surfaceview>
之后再activity 的oncreated中调用setcontentview(R.Layout.main)后理应由系统自动调用surfaceview标准件的构成方法才对,所以我在surfaceview.gethodler().getsurface()后可以在调试中看见msurface是存在的,因此才困惑,因为lockcanvas返回null,但关联的surface已经生成了……