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();
分享到:
相关推荐
**Android SurfaceView 使用详解** `SurfaceView` 是 Android 系统提供的一种特殊的视图组件,它允许开发者在应用程序中创建高性能的图形界面,比如游戏、视频播放器等需要连续更新图像的应用。`SurfaceView` 提供...
下面我们将详细讲解SurfaceView的使用以及在实现一个绘图板时的关键知识点。 首先,SurfaceView包含两个主要组成部分:Surface和View。Surface是实际用于绘图的后台缓冲区,而View则负责管理Surface在屏幕上的显示...
4. 使用Layout嵌套:可以将SurfaceView和控件放入一个单独的FrameLayout或RelativeLayout中,这样可以确保它们在同一个层级上,但仍然需要注意由于SurfaceView的特殊性,控件可能需要手动调整位置。 总的来说,...
4. **同步机制**:SurfaceView使用了一种称为“ Fence ”的同步机制来确保数据正确地呈现在屏幕上。当后台线程完成绘制并提交后,Fence会确保这些改变在用户看到之前已经完成。 5. **性能优化**:由于SurfaceView的...
如何使用SurfaceView: 1. **添加SurfaceView到布局**:在XML布局文件中添加SurfaceView元素,并设置相应的属性。 2. **获取SurfaceHolder**:在Activity的`onCreate()`方法中,通过`SurfaceView.getHolder()`获取...
文件名`szt_SurfaceView`可能包含的是一个关于SurfaceView使用示例的代码或文档,通过学习和分析这个例子,可以更好地理解和掌握SurfaceView在实际项目中的运用。 总之,SurfaceView是Android游戏开发中的重要工具...
《实例3--使用SurfaceView》 SurfaceView是Android系统中一个非常重要的视图组件,它在处理复杂的图形绘制和视频播放等高性能应用时扮演着关键角色。本实例将深入探讨SurfaceView的工作原理及其使用方法。 1. **...
通过理解SurfaceView的工作原理和使用方法,开发者可以创建出流畅、高性能的Android应用程序,尤其适合处理动态内容和需要高效绘图的场景。在实际项目中,结合其他Android组件和框架,SurfaceView可以发挥更大的作用...
这个压缩包文件中的内容可能包括了斗地主游戏的基本实现、发牌逻辑、洗牌算法、界面绘制以及Android的SurfaceView使用等多个关键知识点。下面将详细阐述这些领域的核心概念。 1. **斗地主游戏逻辑**: 斗地主是一...
android使用双缓冲辨析及surfaceview使用例子
提到关注CSDN博客,说明那里有更详细的SurfaceView使用教程和示例代码,可以帮助读者深入理解并实践SurfaceView在游戏开发中的应用。 综上所述,SurfaceView是Android游戏开发中一个重要的工具,通过其特性可以...
本示例“Android使用SurfaceView实现墨迹天气的风车效果”是一个很好的学习资源,适用于毕业设计或论文研究。这个项目主要展示了如何利用Android的SurfaceView组件来创建类似墨迹天气应用中的风车动画效果。下面将...
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
总的来说,实现"android SurfaceView做二维码扫描源码"涉及到Android的SurfaceView使用、摄像头控制、图像处理以及第三方库的集成等多个技术点。理解并掌握这些知识点,才能开发出高效稳定的二维码扫描应用。
在Android开发中,View和SurfaceView是两种常用的用于在屏幕上绘制图形和处理用户交互的组件。...通过理解它们的工作原理和使用场景,开发者可以根据项目需求选择合适的组件,构建出流畅、互动性强的游戏框架。
因此,SurfaceView使用了多线程技术,将耗时的绘图任务移到后台线程,避免阻塞主线程,提高用户体验。 3. **滑块组件**:这个示例中的滑块可能是一个自定义控件,用户可以通过滑动来选择一组按钮。实现这种效果可能...
下面是一个简单的SurfaceView使用例子: 首先,创建一个继承自SurfaceView的类,并实现SurfaceHolder.Callback接口: ```java public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback...
"说明.txt"可能详细介绍了如何使用这个示例代码以及其中的关键概念,而"SurfaceView-Sample-master"很可能是项目源码,包含了具体的SurfaceView使用示例。 源码分析: - `MainActivity.java`:通常这里是应用的主...