android 游戏开发中surfaceview画的图片是怎么释放的?在什么时候释放?

Colder 2011-10-31 10:46:09
如题
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
念茜 2011-10-31
  • 打赏
  • 举报
回复
好好再熟悉下 Activity的生命周期
思路没问题,估计是释放和加载的地方不对
另外一方面就是,一个游戏只需要一个view和一个activity足以
即使手机网游也只需要一个view和一个activity足以

PS:Himi指点的
Colder 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 june1991 的回复:]
给你个例子吧

Java code

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import andr……
[/Quote]

朋友,你理解错了哦,我说的是怎么在surfaceview里面进行图片的释放,不是绘画,具体在哪里释放比较好
June1991 2011-10-31
  • 打赏
  • 举报
回复
给你个例子吧
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class GameSurfaceView extends SurfaceView
implements SurfaceHolder.Callback,Runnable
{
//控制循环
boolean mbLoop = false;

//定义SurfaceHolder对象
SurfaceHolder mSurfaceHolder = null;
int miCount = 0;
int y = 50;


public GameSurfaceView(Context context)
{
super(context);

// 实例化SurfaceHolder
mSurfaceHolder = this.getHolder();

// 添加回调
mSurfaceHolder.addCallback(this);
this.setFocusable(true);

mbLoop = true;
}


// 在surface的大小发生改变时激发
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{

}

// 在surface创建时激发
public void surfaceCreated(SurfaceHolder holder)
{
//开启绘图线程
new Thread(this).start();
}

// 在surface销毁时激发
public void surfaceDestroyed(SurfaceHolder holder)
{
// 停止循环
mbLoop = false;
}

// 绘图循环
public void run()
{
while (mbLoop)
{
try
{
Thread.sleep(200);
}
catch (Exception e)
{

}
synchronized( mSurfaceHolder )
{
Draw();
}

}
}

// 绘图方法
public void Draw()
{
//锁定画布,得到canvas
Canvas canvas= mSurfaceHolder.lockCanvas();

if (mSurfaceHolder==null || canvas == null )
{
return;
}

if (miCount < 100)
{
miCount++;
}
else
{
miCount = 0;
}
// 绘图
Paint mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
//绘制矩形--清屏作用
canvas.drawRect(0, 0, 320, 480, mPaint);
switch (miCount % 4)
{
case 0:
mPaint.setColor(Color.BLUE);
break;
case 1:
mPaint.setColor(Color.GREEN);
break;
case 2:
mPaint.setColor(Color.RED);
break;
case 3:
mPaint.setColor(Color.YELLOW);
break;
default:
mPaint.setColor(Color.WHITE);
break;
}
// 绘制矩形--后面我们将详细讲解
canvas.drawCircle((320 - 25) / 2, y, 50, mPaint);
// 绘制后解锁,绘制后必须解锁才能显示
mSurfaceHolder.unlockCanvasAndPost(canvas);
}
}
实训报告书 实训名称: Android视频播放器 系 (部): 专业班级: 学生姓名: 学 号: 指导教师: 完成日期: "实训课题 "Android视频播放器 " "实训人姓名 " "同组人员 " " "实训日期 " " "实训成绩 " " "指导教" " "师评语" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "指导教师签名:______________ " " "_______年 ____ 月____日 " 目 录 1 实训目的 1 2 android视频播放器系统的分析与设计 1 2.1 系统功能描述 1 2.2 系统模块设计 1 3 主要代码清单 2 4 程序运行与测试 2 5 实训总结 3 android视频播放器系统的设计与实现 1 实训目的 本学期我们学习了JAVA课程和Android应用程序开发课程。而Android应用程序是利用 Java语言开发的,本次实训能够对我们所学的Java语言和Android应用程序开发的一次综 合实践,使我们能够更好的掌握Java语言在实际开发的应用,同时也为了使我们能够 更好的掌握和学习Android应用程序开发,对所学的知识进一步牢固。培养运用所学知识 解决实际课程的能力,培养开发Android应用程序的思想和方法。同时在实训过程也能 不断学习新的知识。 2 Android视频播放器系统的分析与设计 2.1 系统功能描述 该系统是一个能够在Android平台下运行的视频播放器。能够实现一下功能: 1)播放功能: 能够实现mp4、avi格式文件的播放。 2)暂停功能: 点击暂停按钮时能够暂停播放视频,再次点击暂停按钮时能够继续播放。 3)重播功能: 点击重播按钮时能够从头开始播放视频。 4)停止功能: 点击停止按钮时能够停止播放视频,再点击播放按钮时能够从头开始播放。 5)快进功能: 点击快进按钮时能够向前跳跃5秒播放。 6)后退功能: 点击回退按钮时能够向后跳跃5秒播放。 7)显示进度条: 能够显示文件播放进度。 拖动进度条能够实现视频快进、快退功能。 8)退出功能: 点击退出按钮时能够正常退出程序。 2.2 系统模块设计 1、输入文件模块:在该模块采用EditText控件来实现。 2、播放视频模块:该模块是用MediaPlayer类通过surfaceView来实现。 3、暂停播放模块:该模块是用MediaPlayer.push()方法来实现。 4、重播模块:该模块通过MediaPlayer.reset()方法来实现。 5、停止播放模块:该模块通过MediaPlayer.stop()方法实现。 6、快进模块:该模块通过MediaPlayer.seekTo()方法来实现。 7、后退模块:该模块通过MediaPlayer.seekTo()方法来实现。 8、退出模块:该模块通过调用finish()方法来实现,并释放资源。 3 主要代码清单 3.1 main.xml布局文件 android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/filename" /> android:id="@+id/filename" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="yueshen.mp4" /> 该部分是在主界面上放置一个EditText看控件,在本程序用于接收输入的文件名。 <SurfaceView android:id="@+id/surfaceView" android:layout_width="fill_parent" android:layout_height="300dp" /> SurfaceView控件是用于播放
实训报告书 实训名称: Android视频播放器 系 (部): 专业班级: 学生姓名: 学 号: 指导教师: 完成日期: "实训课题 "Android视频播放器 " "实训人姓名 " "同组人员 " " "实训日期 " " "实训成绩 " " "指导教" " "师评语" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "指导教师签名:______________ " " "_______年 ____ 月____日 " 目 录 1 实训目的 1 2 android视频播放器系统的分析与设计 1 2.1 系统功能描述 1 2。2 系统模块设计 1 3 主要代码清单 2 4 程序运行与测试 2 5 实训总结 3 android视频播放器系统的设计与实现 1 实训目的 本学期我们学习了JAVA课程和Android应用程序开发课程。而Android应用程序是利用 Java语言开发的,本次实训能够对我们所学的Java语言和Android应用程序开发的一次综 合实践,使我们能够更好的掌握Java语言在实际开发的应用,同时也为了使我们能够更 好的掌握和学习Android应用程序开发,对所学的知识进一步牢固.培养运用所学知识解决 实际课程的能力,培养开发Android应用程序的思想和方法。同时在实训过程也能不断 学习新的知识。 2 Android视频播放器系统的分析与设计 2.1 系统功能描述 该系统是一个能够在Android平台下运行的视频播放器.能够实现一下功能: 1)播放功能: 能够实现mp4、avi格式文件的播放。 2)暂停功能: 点击暂停按钮时能够暂停播放视频,再次点击暂停按钮时能够继续播放。 3)重播功能: 点击重播按钮时能够从头开始播放视频。 4)停止功能: 点击停止按钮时能够停止播放视频,再点击播放按钮时能够从头开始播放。 5)快进功能: 点击快进按钮时能够向前跳跃5秒播放。 6)后退功能: 点击回退按钮时能够向后跳跃5秒播放。 7)显示进度条: 能够显示文件播放进度。 拖动进度条能够实现视频快进、快退功能。 8)退出功能: 点击退出按钮时能够正常退出程序。 2。2 系统模块设计 1、输入文件模块:在该模块采用EditText控件来实现。 2、播放视频模块:该模块是用MediaPlayer类通过surfaceView来实现。 3、暂停播放模块:该模块是用MediaPlayer。push()方法来实现。 4、重播模块:该模块通过MediaPlayer.reset()方法来实现。 5、停止播放模块:该模块通过MediaPlayer.stop()方法实现。 6、快进模块:该模块通过MediaPlayer.seekTo()方法来实现. 7、后退模块:该模块通过MediaPlayer.seekTo()方法来实现. 8、退出模块:该模块通过调用finish()方法来实现,并释放资源。 3 主要代码清单 3。1 main。xml布局文件 android="http://schemas.android。com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/filename" /〉 android:id="@+id/filename" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="yueshen。mp4" /> 该部分是在主界面上放置一个EditText看控件,在本程序用于接收输入的文件名。 <SurfaceView android:id="@+id/surfaceView" android:layout_width="fill_parent" android:layout_height="300dp" /〉 SurfaceView控件是用于播放

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧