Android精灵动画用法实例

所属分类: 软件编程 / Android 阅读数: 455
收藏 0 赞 0 分享

本文实例讲述了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程序设计有所帮助。

更多精彩内容其他人还在看

Retrofit2日志拦截器的使用

这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android创建外部lib库及自定义View的图文教程

这篇文章主要给大家介绍了关于Android创建外部lib库及自定义View的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序失败的一些事小结

这篇文章主要给大家介绍了关于Android分享微信小程序失败一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序技巧之图片优化

这篇文章主要给大家介绍了关于Android分享微信小程序技巧之图片优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android Viewpager实现无限循环轮播图

这篇文章主要为大家详细介绍了Android Viewpager实现无限循环轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中的Bitmap序列化失败的解决方法

这篇文章主要介绍了Android中的Bitmap序列化失败的解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android自定义通用标题栏CustomTitleBar

这篇文章主要为大家详细介绍了Android自定义通用标题栏CustomTitleBar,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android组合控件自定义标题栏

这篇文章主要为大家详细介绍了Android组合控件自定义标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义复合控件实现通用标题栏

这篇文章主要为大家详细介绍了Android自定义复合控件实现通用标题栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

ExpandableListView实现简单二级列表

这篇文章主要为大家详细介绍了ExpandableListView实现简单二级列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多