Android应用之——仿美团loading加载中动画

前言

想必用过美团客户端的用户对美团那个加载小人的动画印象很深刻,一个可爱的小人在那拼命的跑。这个动画实现的方法其实很多,今天这里就用frame动画来实现一下。

一、效果图

二、布局文件

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:onClick="start"
        android:scaleType="fitCenter"
        android:src="@anim/frame" />

</RelativeLayout>

新建一个anim文件,里面存放的就是准备frame动画的图片,图片直接可以去美团的安装包解压后拿来。

<?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/progress_loading_image_01" android:duration="50" />
    <item android:drawable="@drawable/progress_loading_image_02" android:duration="50" />
</animation-list>

主函数代码:

通过image view的getDrawabel方法 得到一个 AnimationDrawable对象  然后调用start方法就可以开启动画了。

public class MainActivity extends Activity {

	private ImageView imageView;
	private AnimationDrawable ad;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		imageView = (ImageView) findViewById(R.id.imageView);
		ad = (AnimationDrawable) imageView.getDrawable();		// 获取图片内容, 强转为动画对象
	}

	public void start(View v) {
		if (ad.isRunning())
			ad.stop();
		ad.start();		// 开始播放
	}

}
时间: 2025-01-09 04:57:13

Android应用之——仿美团loading加载中动画的相关文章

Ladda 应用提交表单的时候显示loading加载中 包括不同位置,不同效果

Ladda 应用提交表单的时候显示loading加载中 包括不同位置,不同效果 不同大小,位置,效果,进度条等 演示 XML/HTML Code <article class="examples" style="margin-top:0px;"> <section class="button-demo"> <h3>expand-left</h3> <button class="lad

《H5 App开发》MUI框架显示加载中动画

最近使用MUI框架比较多,现在有个需求就是在每个页面加上一个加载中动画 如图: 在百度上找到两个MUI框架的加载中样式, 第一种是需要引用一个js库,在这里不多做解释,小编推荐第二种方式, 只需要一串代码就可以实现 <div class="mui-loading" v-if="loading"> <div class="mui-spinner"></div> </div> 可以利用vue中v-if来

简单的“加载中”动画效果

在日常开发过程中,处理一些延迟操作的时候,经常需要显示一个"加载中"对话框来来表示程序正在请求或正在处理.那么如何写一个最简单的动画效果呢? 这里我写了个demo: MainActivity: public class MainActivity extends Activity {     //ProgressDialog用于显示加载对话框用     private ProgressDialog progressDialog = null;     //显示结果用     privat

用纯CSS实现加载中动画效果

HTML <div class="pswp__preloader__icn"> <div class="pswp__preloader__cut"> <div class="pswp__preloader__donut"></div> </div> </div> CSS .pswp__preloader__icn { opacity:0.75; width: 24px; he

WPF动画 - Loading加载动画

存在问题: 最近接手公司一个比较成熟的产品项目开发(WPF桌面端),其中,在登陆系统加载时,60张图片切换,实现loading闪烁加载,快有密集恐惧症了!!! 代码如下: private void LoadPics() { try { _storyboard = new Storyboard(); for (int i = 0; i < 60; i++) { ObjectAnimationUsingKeyFrames oauf = new ObjectAnimationUsingKeyFrame

页面加载中jquery逐渐消失效果实现

为了获得更好的用户体验,现在大多数网页都会在页面中加一个加载中效果,这里实现一个加载中逐渐消失的效果,以至于看上去不那么生硬. html: <div id="loading"><img src="images/common/loading.gif" ></div> css: /*加载中*/ #loading{     position: fixed;     top: 0;     left: 0;     width: 100%

layui数据表格分页加载动画,自己定义加载动画,&quot;加载中...&quot;

记录思路,仅供参考 在表格渲染完成后,在done回调函数中给分页动态加点击事件, 关闭"加载中..."动画也是在 done回调函数中关闭 这是我实现的思路,记录给大家参考. , done: function (res, curr, count) { // 添加分页加载动画的函数 $('.layui-laypage > a').each(function(){ $(this).attr('onclick',"pageLoading(this)"); }) top

css3动画-加载中...

写几个简单的加载中动画吧. 像前面三种都是相当于几个不同的点轮流来播放同一动画:变大变小.css3里面有一个用于尺度变换的方法:scale(x,y):定义 2D 缩放转换,改变元素的宽度和高度. 第四种就是一个小球从上往下跌落,再弹回去,在上面的时候速度最小,下面的时候速度最大.由于该小球只进行了上下的移动,所以我们可以运用:translateY(n):定义 2D 转换,沿着 Y 轴移动元素,从而实现小球沿Y方向来回移动. 废话不多说了,上代码. 首先,第一个加载中的动画: 1 <div id=

android 下拉刷新上拉加载更多,高仿ios左滑动删除item,解决了众多手势问题

一.前言 老规矩,别的不说,这demo是找了很相关知识集合而成的,可以说对我这种小白来说是绞尽脑汁!程序员讲的是无图无真相!现在大家一睹为快! 二.比较关键的还是scroller这个类的 package com.icq.slideview.view; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; i