SurfaceView显示动画效果
一、基础知识:SurfaceView继承自View,View负责在主线程中更新动画,而SurfaceView是在一个新线程中更新动画。SurfaceView类的主要方法:// 在SurfaceView创建时调用pubilic abstract void surfaceCreated(SurfaceHolder holder)// 在SurfaceView改变时调用pubilic abstract void surfaceChanged(SurfaceHolder holder, int format, int width, int height)// 在SurfaceView销毁时调用pubilic abstract void surfaceDestroyed(SurfaceHolder holder)// 绘制SurfaceView画面protected void onDraw(Canvas canvas)(参数canvas是该SurfaceView的画笔,每一次SurfaceView中画面改变都是调用了该方法)二、实现效果:首先有一副图片从屏幕的左下角开始向右上方运动,当图片上沿与手机屏幕上沿相撞时,图片的水平速度大小与方向均不变,竖直方向上速度大小不变,方向相反;当下沿相撞后,同样效果,直到图片飞出屏幕。之后,屏幕渐渐地显示一幅图片。三、编程实现:1. 界面编辑(res\layout\main.xml):[java]<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/></LinearLayout>2. 代码编辑:(\src\wyf\zcl\MyActivity.java)[java]package wyf.zcl;/** 该例子演示surfaceView中简单场景的绘制* MyActivity.java 为程序的主Activity* MySurfaceView.java 为程序的SurfaceView类* Constant.java 常量类,将常量全部写在该类中* OnDrawThread.java 该类的作用是时时刷新onDraw,进行画面的重绘* PicRunThread.java 该类是控制duke图片运动的类* */import android.app.Activity; //引入相关包import android.content.pm.ActivityInfo; //引入相关包import android.os.Bundle; //引入相关包import android.view.Window; //引入相关包import android.view.WindowManager; //引入相关包public class MyActivity extends Activity {/** Called when the activity is first created. */private MySurfaceView msv; //得到surfaceView的引用@Overridepublic void onCreate(Bundle savedInstanceState) { //Activity的生命周期函数,该函数是在程序创建时调用super.onCreate(savedInstanceState);msv=new MySurfaceView(MyActivity.this); //实例化MySurfaceView的对象requestWindowFeature(Window.FEATURE_NO_TITLE); //设置屏幕显示没有title栏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ,WindowManager.LayoutParams.FLAG_FULLSCREEN); //设置全屏//设置只允许横屏this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);setContentView(msv); //设置Activity显示的内容为msv}}(\src\wyf\zcl\Constant.java)[java]package wyf.zcl;import android.view.Display;//Constant.java 常量类,将常量全部写在该类中public class Constant {public static int SCREENWIDTH=480; //屏幕宽(本程序为横屏)public static int SCREENHEIGHT=320; //屏幕高public static int PICWIDTH=64; //图片宽度public static int PICHEIGHT=64; //图片高度public static int ONDRAWSPEED=30; //onDraw线程类的绘制间隔时间public static float PICXSPEED=1.5f; //图片水平移动速度public static float PICYSPEED=2; //图片垂直移动速度public static int PICRUNSPEED=30; //图片的运动线程的刷新速度public static int PICALPHASPEED=20; //图片渐暗效果演示刷新速度}(\src\wyf\zcl\MySurfaceView.java)[java]package wyf.zcl;import android.content.Context; //引入相关包import android.graphics.Bitmap; //引入相关包import android.graphics.BitmapFactory; //引入相关包import android.graphics.Canvas; //引入相关包import android.graphics.Color; //引入相关包import android.graphics.Paint; //引入相关包import android.view.Display; //引入相关包import android.view.SurfaceHolder; //引入相关包import android.view.SurfaceView; //引入相关包public class MySurfaceView extends SurfaceViewimplements SurfaceHolder.Callback{//此处实现SurfaceHolder.Callback接口,为surfaceView添加生命周期回调函数int dy=Display.DEFAULT_DISPLAY;MyActivity ma; //得到MyActivity的引用Paint paint; //画笔的引用OnDrawThread odt; //OnDrawThread类引用 &nbs补充:移动开发 , 其他 ,
上一个:mvc应用到cocos2d的简单理解
下一个:动态替换内核函数
- 更多wap疑问解答:
- 为什么程序都退出了还可以收到推送?如果大多设备都可以推送那运营商怎么办?
- qt 4.7 sqlserver2000 存储过程调用
- Android FrameBuffer读屏幕30秒后mmap失败
- 联通粗定位用java程序如何来请求和接受数据
- 为什么QT运行Android平台的程序时,mouseMoveEvent事件响应的间隔时间很长??????????
- android与PC蓝牙通讯
- 指定大小的label 内容可变,如果内容超出label的宽度,将未能显示的部分显示在另一个label上
- android如何通过wifi连接无线打印机
- 运行程序,release目录下产生一个乱码文件夹
- 分享个某机构最新安卓资料,自己验证了
- 求助:QT5.0 没有QPrinter吗
- 直接调用 openmax IL 做 h264 解码, 有人会吗?
- android在锁屏界面之上添加一个View
- Bada模拟器如何访问pc机上的web
- 18396828106@163.com