SurfaceView使用笔记

本文分享了作者在使用SurfaceView过程中的实践经验,特别是针对在XML布局文件中直接添加SurfaceView导致应用崩溃的问题进行了详细分析,并提供了相应的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    要想使用surfaceview画出各种各样漂亮的界面,其实主要是对canvas的各种方法的灵活使用。这里并不深入讨论画图技巧,只说我在使用surfaceview中得出的一些经验。


    1.为什么在活动的xml中增加surfaceview运行直接崩溃(没有调用surfaceCreated):

                       这个问题困扰了我很长时间,网上查了很多,有人说是没有addCallback,有人说是空间分配不合理,surfaceview太大什么的。我都试了,还是不行,最后发现是因             为以前我对活动的布局直接设置为surfaview实例,构造器重写的一个参数那个。但是要在布局文件中添加的话,就需要重写那个两个参数的方法:

public LuckyPan(Context context, AttributeSet attrs) 



    2.一些基本的初始化操作

   private Paint paint;
    private Bitmap background;
    private Resources resources;
    private SurfaceHolder holder;
    private Canvas canvas;
    private Thread thread;
    private boolean isRunning = true;



    public LuckyPan(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint();
        background = BitmapFactory.decodeResource(getResources(),R.drawable.bg2);
        //引用资源时经常用到
        resources = getResources();
        //画笔无锯齿
        paint.setAntiAlias(true);
        setFocusable(true);
        setFocusableInTouchMode(true);
        //用这个获取画布canvas
        holder = getHolder();
        //感知生命周期
        holder.addCallback(this);
    }
    //在surfaceCreated中开线程,在surfaceDestroyed中关线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值