Android精灵动画用法实例

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

(0)

相关推荐

  • Android编程中Tween动画和Frame动画实例分析

    本文实例讲述了Android编程中Tween动画和Frame动画实现方法.分享给大家供大家参考,具体如下: Animation主要有两种动画模式:Tween动画和Frame动画 Tween动画由四种类型组成 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 res目录下新建anim创建Tween.xml <?xml version="1.0" encoding="utf-8

  • Android编程之界面跳动提示动画效果实现方法

    本文实例讲述了Android编程之界面跳动提示动画效果实现方法.分享给大家供大家参考,具体如下: 上一个效果图: 先上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

  • Android编程根据系列图片绘制动画实例总结

    本文实例讲述了Android编程根据系列图片绘制动画的方法.分享给大家供大家参考,具体如下: 一.采用系统提供的Animation类,用自带的方法 其中的animation.xml文件如下: <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@

  • Android实现动画效果详解

    目前Android平台提供了两类动画一类是Tween动画,第二类就是 Frame动画,具体内容介绍请看下文: 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似. 实现动画有两种方式:一种使用XML文件(文件放在res/anim),一种直接代码搞定  1.透明度控制动画效果alpha <!-- 透明度控制动画效果alpha 浮点型值: fromAlpha 动画起始时透明

  • android Tween Animation属性设置方法实例

    在Android开发中,Animation是用来给控件制作效果的.大多数的控件都可以用这个类,这个类包含了4种基本动作,分别为移动,旋转,淡入淡出,缩放.在使用Animation时,可以在.java文件中用java代码对其进行设置,这样的优点是可以方便调试程序效果:另外一种方法就是在xml中对控件的属性做设置,好处是代码的重用性比较高,缺点是不方便调试. 一.在java代码中使用Animation在java代码中使用Animation主要分为下面4个步骤.创建一个AnimationSet类,An

  • Android编程实现仿心跳动画效果的方法

    本文实例讲述了Android编程实现仿心跳动画效果的方法.分享给大家供大家参考,具体如下: // 按钮模拟心脏跳动 private void playHeartbeatAnimation() { AnimationSet animationSet = new AnimationSet(true); animationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5

  • Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍

    主要介绍Android中如何使用rotate实现图片不停旋转的效果.Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果:第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似.本文分析 Tween动画的rotate实现旋转效果. 在新浪微博客户端中各个操作进行中时activity的右上角都会有个不停旋转的图标,类似刷新的效果,给用户以操作中的提示.这种非模态的提示方式推荐使用,那么下面就分享下如何实现这种效果

  • android实现字体闪烁动画的方法

    本文实例讲述了android实现字体闪烁动画的方法.分享给大家供大家参考.具体如下: 这里基于线程和Timer实现Android的字体闪烁动画效果. public class ActivityMain extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spark(); } pr

  • Android编程之简单逐帧动画Frame的实现方法

    本文实例讲述了Android编程之简单逐帧动画Frame的实现方法.分享给大家供大家参考,具体如下: 1.逐帧动画 即是通过播放预先排序好的图片来实现动态的画面,感觉像是放电影. 2.实现步骤: ① 在工程里面导入要播放的图片.此简单例子中为start_icon1,2,3. ② 在工程res文件目录下新建一个anim文件夹,在里面新建一个start_animation.xml格式文件,此文件用来定义动画播放图片的顺序及每一张图片显示停留时间. 代码如下: <?xml version="1.

  • Android精灵动画用法实例

    本文实例讲述了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

  • Android 帧动画的实例详解

    Android 帧动画的实例详解 对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,就可以连起来了看成是一个小电影,你懂得 好得,比就装到这里,下面开始进入正题,由于产品需求 需要做一个 声音喇叭动态切换的样式,我特么第一就想到是帧动画切换,然后就百度了一些资料,发现 真的, 现在这个网上太多的资料是 copy粘贴过来的, 一错全错,对于这种情况我只想说,made,一群垃圾, 所以今天我将带你们走进Android 正确帧动画地址. 第一步

  • Android 中WallpaperManager用法实例

    Android 中WallpaperManager用法实例 注意:壁纸的设置得加入权限: <uses-permission android:name="android.permission.SET_WALLPAPER"/> 1.WallpaperManager  对象的获得: wallpaperManager =WallpaperManager.getInstance(this); 2.设置壁纸的方法: 方法一:wallpaperManager.setBitmap(); /

  • Java中的instanceof关键字在Android中的用法实例详解

    在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj

  • Android Fragment的用法实例详解

    碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示.Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了. Fragment组件 Fragment是Android 3.0的时候被引入的,主要目的是为了给大屏幕(如平板电脑)添加动态和灵活的UI支持.利用Fragment实现更好的用户体验. Fragment加载 1.静态加载:添加Fragment到Activity布局中,以xml的形式. 2.动态加载: <LinearLayout android

  • Android开发之Animations动画用法实例详解

    本文实例讲述了Android开发之Animations动画用法.分享给大家供大家参考,具体如下: 一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 Java Code代码中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸

  • Android可循环显示图像的Android Gallery组件用法实例

    本文实例分析了Android可循环显示图像的Android Gallery组件用法.分享给大家供大家参考,具体如下: Gallery组件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能有限地显示指定的图像.也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了.这虽然在大多数时候没有什么关系,但在某些情况下,我们希望图像显示到最后一张时再重第1张开始显示,也就是循环显示.要实现这种风格的Gallery组件,就需要对Gall

  • jQuery使用animate创建动画用法实例

    本文实例讲述了jQuery使用animate创建动画用法.分享给大家供大家参考.具体如下: animate的用法: animate( Hash params, String|NumberJavascript 字符串或数字值 speed, String easing , Function callback(可选) 在动画完成时执行的函数 )用于创建自定义动画的函数. 实例运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.

  • Android中Notification用法实例总结

    本文实例总结了 Android中Notification用法.分享给大家供大家参考,具体如下: 我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也知道Android系统也是在不断升级的,有关Notification的用法也就有很多种,有的方法已经被android抛弃了,现在我实现了三种不同的方法,并适应不同的android版本.现在我就把代码公布出

  • Android列表对话框用法实例分析

    本文实例讲述了Android列表对话框用法.分享给大家供大家参考.具体如下: main.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:la

随机推荐