自学android必备 标准surfaceView典型代码
2012-02-22 22:05
381 查看
自学安卓有一段时间了,从学习雨松大大的安卓教程开始,已经有一段时间了。
总的来说,这东西的学习过程,就是师傅领进门,学艺靠个人,而真正让我进入安卓大门的这样一个代码结构,我今天也想要在这里分享给大家。
SurfaceView这东西说来也很有趣,基本上现在要写游戏的话,都要靠它,而且要写触摸屏的话,还能做到实时刷新坐标位置,View则只能做到反馈式刷新
话说回来,本来在我这个代码的预估里面,是用不到触摸屏的,但是为了体现这是一个常用并且完整的框架,我将会加入进去,并且用注释做一些说明
差不多就是这么个常用框架,StringView 这个东西大家就可以根据自己的需求写成自己需要的任何程序,上面这一大段代码呢,如果觉得有需求,完全可以直接复制过去用
有什么细致性的需求,可以往里面添加,我自己基本就是把这个框架当做万精油到处嵌套细节内容
话说,这一部分内容就到这里,我会在下一篇把这一段内容的实际用处展现出来的,而且,我写出来的单个程序,都可能是这种架构,这里可以翻看我的其他代码
总的来说,这东西的学习过程,就是师傅领进门,学艺靠个人,而真正让我进入安卓大门的这样一个代码结构,我今天也想要在这里分享给大家。
SurfaceView这东西说来也很有趣,基本上现在要写游戏的话,都要靠它,而且要写触摸屏的话,还能做到实时刷新坐标位置,View则只能做到反馈式刷新
话说回来,本来在我这个代码的预估里面,是用不到触摸屏的,但是为了体现这是一个常用并且完整的框架,我将会加入进去,并且用注释做一些说明
package sam.sucl; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Bundle; import android.view.Display; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class StringHW extends Activity{ StringView stringView=null; ////自己写的显示类对象 public void onCreat(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Display display=getWindowManager().getDefaultDisplay(); stringView=new StringView(this,display.getWidth(),display.getHeight()); //可以顺手在display上面写入是否有title栏与横竖屏,而上面则是把需要用到的屏幕信息送入到自定义屏幕刷新的类中去 setContentView(stringView); } //以下这一个方法就是对于stringView进行触摸控制的 public boolean onTouchEvent(MotionEvent event){ int x=(int) event.getX(); int y=(int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: stringView.UpdateTouchEvent(x, y); //这一段代码就是在触碰效果之后,实现什么样的内容用的 break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; default: break; } return false; } public class StringView extends SurfaceView implements Callback,Runnable{ private Context mContext=null; private Thread mThread=null; private Canvas canvas=null; private Paint paint=null; private SurfaceHolder surfaceHolder=null; private boolean isRunning=false; private int mScreenWight=0; private int mScreenHeight=0; public StringView(Context context, int width, int height) { super(context); mContext=context; canvas=new Canvas(); paint=new Paint(); mScreenHeight=height; mScreenWight=width; surfaceHolder=getHolder(); surfaceHolder.addCallback(this); setFocusable(true); //设定触碰允许 init(); //总的来说,以上就是类的初始化部分 } private void init() { //这里写入绝大部分需要初始化的内容 } private void doDraw() { //这里写入线程刷新的时候屏幕显示的内容 //可以用state来进行状态机控制,使得刷新机制趋向于各种可能 } public void UpdateTouchEvent(int x, int y) { //触碰之后,想要实现什么样的功能,就在这里写了,这里是一个很神髓的方法 //可以再上面的参数中追加一个boolean参数,判断是否一直处于触碰状态, } //屏幕刷新的线程,差不多就是这样了 public void run(){ while (isRunning) { synchronized (surfaceHolder) { canvas=surfaceHolder.lockCanvas(); doDraw(); surfaceHolder.unlockCanvasAndPost(canvas); } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } //最下面这三个玩意是常规的,直接可以复制了用 public void surfaceChanged(SurfaceHolder holder,int arg1,int arg2,int arg3){ } public void surfaceCreated(SurfaceHolder surfaceHolder){ isRunning=true; mThread=new Thread(this); mThread.start(); } public void surfaceDestroyed(SurfaceHolder surfaceHolder){ isRunning=false; } } }
差不多就是这么个常用框架,StringView 这个东西大家就可以根据自己的需求写成自己需要的任何程序,上面这一大段代码呢,如果觉得有需求,完全可以直接复制过去用
有什么细致性的需求,可以往里面添加,我自己基本就是把这个框架当做万精油到处嵌套细节内容
话说,这一部分内容就到这里,我会在下一篇把这一段内容的实际用处展现出来的,而且,我写出来的单个程序,都可能是这种架构,这里可以翻看我的其他代码
相关文章推荐
- 【Android自学笔记之三】surfaceView更新线程
- Android中SurfaceView视频播放实现代码
- Android的SurfaceView测试代码
- Android视图SurfaceView的实现原理分析(示例,出错代码)
- Andriod 中通过SurfaceView来绘制图形 标准的代码流程,很值得一看
- Android中SurfaceView视频播放实现代码
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!
- 【Android游戏开发之七】(游戏开发中需要的样式)再次剖析游戏开发中对SurfaceView中添加组件方案!
- Android开发之播放器中涉及的Surface,SurfaceView,SurfaceHolder基础
- Android之SurfaceView窗口/全屏播放
- Android长按imageview把图片保存到本地的实例代码
- 【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!
- Android 代码中动态设置字体大小-TextView.SetTextSize()
- Android应用截图和SurfaceView截图问题(学生PAD抽奖系统)
- Android显示系统之View与SurfaceView更新屏幕的区别
- android studio 如何进行格式化代码 快捷键必备
- Android之——Surface、SurfaceView与SurfaceHolder.Callback初探
- Android WebView 上传图片注意事项和完整代码参考
- webview调用android代码