大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它。它的使用更加简单,只需要创建一个AnimationDrawabledF对象来表示Frame动画,然后通过addFrame 方法把每一帧要显示的内容添加进去,最后通过start 方法就可以播放这个动画了,同时还可以通过 setOneShot方法设置是否重复播放。 下面就是一个用Frame动画模拟日全食的效果。先看看效果。








Activity01
Java代码
  1. package xiaohang.zhimeng;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.KeyEvent;
  5. import android.view.Window;
  6. import android.view.WindowManager;

  7. public class Activity01 extends Activity {
  8. private GameView mGameView;

  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. // 设置无标题栏
  13. requestWindowFeature(Window.FEATURE_NO_TITLE);
  14. // 设置为全屏模式
  15. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  16. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  17. mGameView = new GameView(this);
  18. setContentView(mGameView);
  19. }

  20. public boolean onKeyUp(int keyCode, KeyEvent event) {
  21. if (mGameView == null) {
  22. return false;
  23. }
  24. mGameView.onKeyUp(keyCode, event);
  25. return true;
  26. }

  27. public boolean onKeyDown(int keyCode, KeyEvent event) {
  28. if (mGameView == null) {
  29. return false;
  30. }
  31. if (keyCode == KeyEvent.KEYCODE_BACK) {
  32. // 关闭Activity
  33. this.finish();
  34. return true;
  35. }
  36. return super.onKeyDown(keyCode, event);
  37. }
  38. }
GameView
Java代码
  1. package xiaohang.zhimeng;

  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.drawable.AnimationDrawable;
  5. import android.graphics.drawable.Drawable;
  6. import android.view.KeyEvent;
  7. import android.view.View;

  8. public class GameView extends View{

  9. //定义AnimationDrawable动画
  10. private AnimationDrawable frameAnimation = null;
  11. Context mContext = null;

  12. //定义一个Drawable对象
  13. Drawable mBitAnimation = null;

  14. public GameView(Context context) {
  15. super(context);

  16. mContext = context;

  17. //实例化AnimationDrawable对象
  18. frameAnimation = new AnimationDrawable();

  19. /*装载资源*/
  20. //这里用一个循环装载所有名字类似的资源
  21. //如"a1...........15.png"的图片
  22. for(int i = 1; i <= 15; i++){
  23. int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName());
  24. //此方法返回一个可绘制的对象与特定的资源ID相关联
  25. mBitAnimation = getResources().getDrawable(id);
  26. /*为动画添加一帧*/
  27. //参数mBitAnimation是该帧的图片
  28. //参数500是该帧显示的时间,按毫秒计算
  29. frameAnimation.addFrame(mBitAnimation, 500);
  30. }
  31. /*上边用到了Resources的getIdentifier方法 方法返回一个资源的唯一标识符,如果没有这个资源就返回0
  32. * 0不是有效的标识符,在说说这个方法几个参数的含义
  33. * 第一个 就是我们的资源名称了。
  34. * 第二个 就是我们要去哪里找我们的资源 我们的图片在drawable 下 所以为drawable
  35. * 第三个 我们用了Context的getPackageName返回应用程序的包名
  36. * */
  37. //设置播放模式是否循环播放,false表示循环,true表示不循环
  38. frameAnimation.setOneShot(false);
  39. //设置本类将要显示的这个动画
  40. this.setBackgroundDrawable( frameAnimation );
  41. }
  42. @Override
  43. protected void onDraw(Canvas canvas) {
  44. super.onDraw(canvas);
  45. }
  46. public boolean onKeyUp(int keyCode, KeyEvent event){
  47. switch (keyCode) {
  48. case KeyEvent.KEYCODE_DPAD_UP:
  49. //当按手机的上方向键时开始播放
  50. frameAnimation.start();
  51. break;
  52. }
  53. return true;
  54. }
  55. }
同样Frame 也可以用xml文件实现,大家去看 api吧。

xh_05_17_Test.rar

更多相关文章

  1. Android通过scroller实现缓慢移动
  2. Android(安卓)Studio---断点调试和高级调试
  3. UISwipeGestureRecognizer ---手指动作
  4. 从使用到源码,细说 Android(安卓)中的 tint 着色器
  5. Android(安卓)反射机制
  6. Cursor与Adapter结合使用
  7. Android(安卓)UI开发——使用Fragment构建灵活的桌面
  8. Android中关于JNI 的学习(零)简单的例子,简单地入门
  9. 我的第一个Android升级版本

随机推荐

  1. Android设置输入框和软键盘动态悬浮
  2. android 蓝牙权限问题
  3. 调查应用的RAM使用情况
  4. android XMl Selector 图片背景点击和焦
  5. 导入第三方项目因gradle引起的不能运行问
  6. Android(安卓)StudioHttp协议GET连接
  7. android 可以控制速度的跑马灯
  8. 原著阅读 - Android(安卓)Programming Th
  9. numberPicker实现时间选择设置功能
  10. android写入数据库、读取sqlite中的图片