1.添加surfaceview上点击事件,左右滚动等事件。
private SurfaceView mPreview;
public SurfaceHolder holder;
mPreview = (SurfaceView) findViewById(R.id.fullplayer);
mPreview.setOnTouchListener(this);
holder = mPreview.getHolder();
holder.addCallback(this);
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
Log.d(TAG, "onDown");
return true;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
Log.d(TAG, "onSingleTapUp");
}
return false;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
System.out.println("surfaceChanged()");
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d(TAG, "surfaceCreated");
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.d(TAG, "surfaceDestroyed");
}
2.在单独的线程中画图
class DrawBitamp extends Thread{
public void run(){
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
//画图语句 }
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
}
3.surfaceview中做游戏一些常用语句
(1)获取drawable中的图片
Resources res = context.getResources();
// cache handles to our key sprites & other drawables
Drawable mLanderImage = context.getResources().getDrawable(
R.drawable.lander_plain);
(2)drawable->bitmap
Bitamp mBackgroundImage = BitmapFactory.decodeResource(res,
R.drawable.earthrise);
// Use the regular lander image as the model size for all sprites
mLanderWidth = mLanderImage.getIntrinsicWidth();
mLanderHeight = mLanderImage.getIntrinsicHeight();
分享到:
相关推荐
一个使用SurfaceView的Demo
该示例介绍如何使用SurfaceView的上述模版代码实现一个绘图板。
SurfaceView画图实例。模版代码,可正常运行。可以很好的学习使用SurfaceView
NULL 博文链接:https://byandby.iteye.com/blog/824535
android使用双缓冲辨析及surfaceview使用例子
SurfaceView的基本用法,以及如何进行绘制组合图形+移动
AndroidApp中使用SurfaceView制作多线程动画的实例讲解.docx
NULL 博文链接:https://lsdev.iteye.com/blog/1064971
View与SurfaceView游戏框架Demo,监听用户方向键事件以及触摸事件。
细致的SurfaceView实例,SurfaceView使用的模式,以及读取文件的常用方式。
一个简单的SurfaceView使用Demo,主要是希望帮助大家熟悉SurfaceView的一般使用流程。
Android应用源码开发Demo,主要用于毕业设计学习。
android中的surfaceview示例源码下载,Android SurfaceView在游戏开发中使用想当广泛,SurfaceView对于画面的控制有着更大的自由度,它不像View那样要用handler来更新,但是网上关于 SurfaceView使用这方面的参考...
Android中SurfaceView的使用
Android下使用SurfaceView播放视频文件,详细参见博客:http://www.cnblogs.com/plokmju/p/android_SurfaceView.html
使用双SurfaceView实现一个SurfaceView预览照相机数据,一个SurfaceView画图形,以下是程序运行效果,其中顶层的SurfaceView画的图形会跟着方向传感器的变化而旋转。
使用MediaPlayer和SurfaceView播放视频. 使用MediaPlayer播放视频的步骤 1、创建MediaPlyer的对象,并让他加载指定的视频文件。 2、在界面布局文件中定义SurfaceView组件,或在程序中创建SurfaceView组件。并为...
SurfaceView一般用于游戏中,但是有时候我们自定义View的时候,自定义View现有的功能区不能达到我们预期的效果,所以surfaceview也是一个不错的选择.这个demo是一个surfaceview的基础应用,适合新手.
使用VideoView播放视频简单、方便,但有些早期的开发者还是更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放...
在android中surfaceView的使用