android中的surfaceview控件

SurfaceView是继承于View类的,有绘制动态图片,播放视频的作用。View负责在主线程中更新动画,而在SurfaceView是在一个新线程中更新动画,并且它是一个2D的画布效果,将自己放置于屏幕的最低层进行图画的显示,

SurfaceView的使用方法:

1.当单独建立一个SurfaceView的工程

需要将这个工程继承SurfaceView 并接口于SurfaceHolderCallbackRunnable  其中SurfaceHolder是用来监听画布,Runnable则是用来开启一个新进程,在进程中进行画面的绘制。

public class GameViewOK extends SurfaceView implements Callback, Runnable

完成继承和接口后,会有三个构造函数和一个重载函数,分别为:surfaceCreatedsurfaceChangedsurfaceDestroyed以及GameViewOK(例子),其中三个构造函数分别表示SurfaceView在创建,改变和毁坏时要做的相关处理,一般图形的绘制放在surfaceChanged中进行。在重载函数中使用代码

surfaceHolder = this.getHolder();

surfaceHolder.addCallback(this);//注册回调方法

来设置SurfaceHoler并添加回调方法,不添加这个回调会报空指针异常,SurfaceHolder相当于遥控器来控制SurfaceView

SurfaceView主要用来绘制图片,通过线程来实现画面的动画效果,在绘制图画的过程中,需要三个步骤:

(1)获取画布并锁定画布

Canves = SurfaceHolder.lockCanvas()

(2)然后在画布中进行绘画的操作

(3)绘制完毕后,使用SurfaceHolder.unlockCanvas方法来解锁画布,以供后续的操作。

2.mianActivity中添加surfaceview

同样是先建立一个JAVA类继承surfaceview并接口于surfaceHolder.Callback,Runnable。然后在mainActivity中创建类对象,在setContext中添加此类。例如: gameViewOK = new GameViewOK(this);

  setContentView(gameViewOK);

 

3.surfaceView上添加控件

当需要在SurfaceView上添加控件时,只需将继承于SurfaceView的类以控件的形式添加到布局文件即可。

<ControlTool.surfaceView

    android:layout_width="fill_parent"

 android:layout_height="fill_parent"/>

这样就可以在surfaceview上添加其他控件。

转载于:https://my.oschina.net/u/2408219/blog/476541

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值