本文实例讲述了Android精灵动画用法。分享给大家供大家参考。具体如下:

ElaineAnimated.java文件如下:

package net.obviam.walking.model;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Rect;public class ElaineAnimated {  private static final String TAG = ElaineAnimated.class.getSimpleName();  private Bitmap bitmap;  // the animation sequence  private Rect sourceRect;  // the rectangle to be drawn from the animation bitmap  private int frameNr;  // number of frames in animation  private int currentFrame;  // the current frame  private long frameTicker;  // the time of the last frame update  private int framePeriod;  // milliseconds between each frame (1000/fps)  private int spriteWidth;  // the width of the sprite to calculate the cut out rectangle  private int spriteHeight;  // the height of the sprite  private int x;  // the X coordinate of the object (top left of the image)  private int y;  // the Y coordinate of the object (top left of the image)  public ElaineAnimated(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) {    this.bitmap = bitmap;    this.x = x;    this.y = y;    currentFrame = 0;    frameNr = frameCount;    spriteWidth = bitmap.getWidth() / frameCount;    spriteHeight = bitmap.getHeight();    sourceRect = new Rect(0, 0, spriteWidth, spriteHeight);    framePeriod = 1000 / fps;    frameTicker = 0l;  }  public Bitmap getBitmap() {    return bitmap;  }  public void setBitmap(Bitmap bitmap) {    this.bitmap = bitmap;  }  public Rect getSourceRect() {    return sourceRect;  }  public void setSourceRect(Rect sourceRect) {    this.sourceRect = sourceRect;  }  public int getFrameNr() {    return frameNr;  }  public void setFrameNr(int frameNr) {    this.frameNr = frameNr;  }  public int getCurrentFrame() {    return currentFrame;  }  public void setCurrentFrame(int currentFrame) {    this.currentFrame = currentFrame;  }  public int getFramePeriod() {    return framePeriod;  }  public void setFramePeriod(int framePeriod) {    this.framePeriod = framePeriod;  }  public int getSpriteWidth() {    return spriteWidth;  }  public void setSpriteWidth(int spriteWidth) {    this.spriteWidth = spriteWidth;  }  public int getSpriteHeight() {    return spriteHeight;  }  public void setSpriteHeight(int spriteHeight) {    this.spriteHeight = spriteHeight;  }  public int getX() {    return x;  }  public void setX(int x) {    this.x = x;  }  public int getY() {    return y;  }  public void setY(int y) {    this.y = y;  }  // the update method for Elaine  public void update(long gameTime) {    if (gameTime > frameTicker + framePeriod) {      frameTicker = gameTime;      // increment the frame      currentFrame++;      if (currentFrame >= frameNr) {        currentFrame = 0;      }    }    // define the rectangle to cut out sprite    this.sourceRect.left = currentFrame * spriteWidth;    this.sourceRect.right = this.sourceRect.left + spriteWidth;  }  // the draw method which draws the corresponding frame  public void draw(Canvas canvas) {    // where to draw the sprite    Rect destRect = new Rect(getX(), getY(), getX() + spriteWidth, getY() + spriteHeight);    canvas.drawBitmap(bitmap, sourceRect, destRect, null);    canvas.drawBitmap(bitmap, 20, 150, null);    Paint paint = new Paint();    paint.setARGB(50, 0, 255, 0);    canvas.drawRect(20 + (currentFrame * destRect.width()), 150, 20 + (currentFrame * destRect.width()) + destRect.width(), 150 + destRect.height(), paint);  }}

希望本文所述对大家的Android程序设计有所帮助。

更多相关文章

  1. 如何生成 AAC ADTS 基本流与 Android MediaCodec 标签: Android
  2. 20172323 2017-2018-2《程序设计与数据结构》第十一周学习总结
  3. 以一个小程序设计来入门Android
  4. Android修行之路——Android程序设计基础(一)
  5. Android TestView文本文字修改实例
  6. 分享第一本中文Android书籍(应用框架和程序设计--高焕堂)
  7. Android 系统中 gps Location Service 的实现与架构,本文可以帮助
  8. 20172324 2017-2018《程序设计与数据结构》第十一周学习总结
  9. 第三章 Android程序设计基础

随机推荐

  1. Android(安卓)no such table (找不到表)
  2. Windows XP下Android开发环境搭建(二)
  3. React Native Linking与 Android原生页面
  4. Android进程的内存管理分析
  5. 在Android的c/c++代码中使用LOG
  6. Android根据Button状态(normal,focused,p
  7. Android按键响应之初见
  8. android入门:zxing学习笔记
  9. 企业开发与Android
  10. Android中SQLite应用详解(sql访问数据库)