想做一个动画,一个会跑的小人,从屏幕右侧跑道右侧,于是做了个尝试,上图:

要完成这样需要三步:

1. 做一个 帧动画 (frame animation),由多张图片组成,组成小人连续跑动的样子。

2. 做一个 位移动画 使得小人 从左到右产生移动。

3. 在onStart里启动动画

下面分别解释:

---第一步------------------

准备多个动作的图片,写个xml animation :

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" > <item
android:drawable="@drawable/loading_iv_00"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_01"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_02"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_03"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_04"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_05"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_06"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_07"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_08"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_09"
android:duration="60">
</item>
<item
android:drawable="@drawable/loading_iv_10"
android:duration="60">
</item> </animation-list>

代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView1 = (ImageView) findViewById(R.id.imageView1); imageView1.setImageResource(R.anim.loading);
imageView1.setVisibility(View.GONE);
mAnimationDrawable = (AnimationDrawable) imageView1.getDrawable();
mAnimationDrawable.setOneShot(false);
}

---第二步-----------------------

写 位移动画 的代码:

        Animation translate = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.2f,
Animation.RELATIVE_TO_PARENT, 1, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0); translate.setDuration(3000);
translate.setRepeatCount(Animation.INFINITE);

这句话的意思时,相对于 父容器 的x坐标移动,y轴不改变,一直循环

---第三步--------------------------

启动动画即可,贴完整代码:

package com.example.demo_run;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView; public class MainActivity extends Activity {
ImageView imageView1;
AnimationDrawable mAnimationDrawable; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView1 = (ImageView) findViewById(R.id.imageView1); imageView1.setImageResource(R.anim.loading);
imageView1.setVisibility(View.GONE);
mAnimationDrawable = (AnimationDrawable) imageView1.getDrawable();
mAnimationDrawable.setOneShot(false);
} @Override
protected void onStart() {
startAnimation();
super.onStart();
} private void startAnimation() { mAnimationDrawable.start();
Animation translate = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.2f,
Animation.RELATIVE_TO_PARENT, 1, Animation.RELATIVE_TO_SELF, 0,
Animation.RELATIVE_TO_SELF, 0); translate.setDuration(3000);
translate.setRepeatCount(Animation.INFINITE);
imageView1.startAnimation(translate); imageView1.setVisibility(View.VISIBLE);
}
}

页面布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3F99C3"
tools:context=".MainActivity" > <ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" /> </RelativeLayout>

---最后-------------------

演示代码下载。

android开发(43) 动画演示,会跑的小人,从屏幕左侧跑到右侧的更多相关文章

  1. android开发(31) 动画演示 - 从页面底部向上弹出dialog,消失时逐渐向下

    我想实现一个效果,从底部向上逐渐弹出.如下图所示: 1.点击 显示 按钮时,一个dialog对话框从底部慢慢向上弹出. 2.关闭dialog时, dialog缓慢的移动向底部消失.很平滑的效果.   ...

  2. Android开发学习——动画

    帧动画> 一张张图片不断的切换,形成动画效果* 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长              ...

  3. Android开发之动画(转)

    activity跳转的过渡效果,很漂亮,很全 注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用. 第一个参数为第一个Activ ...

  4. Android 开发之动画详解

    一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画 ...

  5. Android开发——View动画、帧动画和属性动画详解

    0. 前言   Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图 ...

  6. android开发之动画的详解 整理资料 Android开发程序小冰整理

    /** * 作者:David Zheng on 2015/11/7 15:38 * *  网站:http://www.93sec.cc * *  微博:http://weibo.com/mcxiaob ...

  7. Android开发Thread+Handler演示样本(打地鼠)

    直接在代码 package com.mingrisoft; import java.util.Random; import android.app.Activity; import android.o ...

  8. Android开发属性动画

    普通动画效果和属性动画效果区别: 普通动画效果的动画播放后只是产生了视觉欺骗,并没有移动真实的控件. 属性动画直接真实的移动控件 AnimationSet动画: TextView t1 = (Text ...

  9. Android开发系列(一)Activity与Fragment获取屏幕获取屏幕像素的不同方式

    Activity中常用的获取屏幕像素代码: //获取屏幕像素相关信息 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getD ...

随机推荐

  1. 《Deep Learning》(深度学习)中文版 开发下载

    <Deep Learning>(深度学习)中文版开放下载   <Deep Learning>(深度学习)是一本皆在帮助学生和从业人员进入机器学习领域的教科书,以开源的形式免费在 ...

  2. OAuth 2.0介绍

    简介 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 一.应用场景 为了理解OAuth的适用场合,让我举一个假设的例子. 有一个&q ...

  3. Viewpager 的相关总结

    1.修改切换item的时间 public class FixedSpeedScroller extends Scroller { ; public FixedSpeedScroller(Context ...

  4. LeetCode(35) Search Insert Position

    题目 Given a sorted array and a target value, return the index if the target is found. If not, return ...

  5. JVM源码分析之安全点safepoint

    https://blog.csdn.net/iter_zc/article/details/41892567 https://www.jianshu.com/p/c79c5e02ebe6

  6. 阿里云流计算BLINK

    https://help.aliyun.com/product/45029.html?spm=a2c4g.11186623.3.1.sSHCfr https://yq.aliyun.com/tags/ ...

  7. iOS开发-应用管理

    // //  ViewController.m //  21-应用管理-1 // //  Created by hongqiangli on 2017/8/2. //  Copyright © 201 ...

  8. 【MyBean-开源框架】进行简单的逻辑插件(演示在控制台中应用)

    [说明] 很多时候大家认为客户端插件一般是窗体.其实不然,很多功能都可以看成是插件,比如一个单据的审批功能,一个单据上面,单价的获取功能,都可以看成是插件,然后后期通过配置,可以灵活进行切换.MyBe ...

  9. 【C/C++】深入理解指针和数组的关系

    对数组名进行取地址运算 ,,}; ] = &a; //注意左值 对数组名取地址,得到的指针为指向整个数组的指针. 形参数组 形参为数组时勿须带数组长度,因为计算机不会处理,如果需要传数组长度, ...

  10. Vue项目页面跳转时候的,浏览器窗口上方的进度条显示

    1.安装: cnpm install --save nprogress 2.在main.js中引入: import NProgress from 'nprogress' import 'nprogre ...