Android模拟美团客户端进度提示框

用过美团客户端的朋友都知道,美团的加载等待提示很有意思,是一种动画的形式展现给我们,下面我们就对这背后的原理进行了解,然后实现自己的等待动画效果。
首先我们准备两张图片:

这两张图片看起来一模一样啊?细心的朋友会发现唯一不同的就在脚部,OK,我们就利用这两张图片的轮换播放实现动画效果,下面看一下代码:
1.动画文件frame_meituan.xml:

<?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="150"/>
 <item
 android:drawable="@drawable/progress_loading_image_02"
 android:duration="150"/> 

</animation-list> 

150毫秒进行图片的切换,模拟动画效果。
2.简单自定义一个控件-MeituanProgressDialog.java:

package com.finddreams.runningman; 

import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView; 

import com.example.runningman.R; 

/**
 * @Description:自定义对话框
 * @author http://blog.csdn.net/yayun0516
 */
public class MeituanProgressDialog extends ProgressDialog { 

 private AnimationDrawable mAnimation;
 private Context mContext;
 private ImageView mImageView;
 private String mLoadingTip;
 private TextView mLoadingTv;
 private int count = 0;
 private String oldLoadingTip;
 private int mResid; 

 /**
 *
 * @param context
 * 上下文对象
 * @param content
 * 显示文字提示信息内容
 * @param id
 * 动画id
 */
 public MeituanProgressDialog(Context context, String content, int id) {
 super(context);
 this.mContext = context;
 this.mLoadingTip = content;
 this.mResid = id;
 setCanceledOnTouchOutside(true);
 } 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 initView();
 initData();
 } 

 private void initData() { 

 mImageView.setBackgroundResource(mResid);
 // 通过ImageView对象拿到背景显示的AnimationDrawable
 mAnimation = (AnimationDrawable) mImageView.getBackground(); 

 mImageView.post(new Runnable() {
 @Override
 public void run() {
 mAnimation.start(); 

 }
 });
 mLoadingTv.setText(mLoadingTip); 

 } 

 public void setContent(String str) {
 mLoadingTv.setText(str);
 } 

 private void initView() {
 setContentView(R.layout.progress_dialog);// 显示界面
 mLoadingTv = (TextView) findViewById(R.id.loadingTv);
 mImageView = (ImageView) findViewById(R.id.loadingIv);
 } 

} 

上面用到的提示布局文件的progress_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:orientation="vertical" > 

 <ImageView
 android:id="@+id/loadingIv"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@anim/frame_meituan"/> 

 <TextView
 android:id="@+id/loadingTv"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignBottom="@+id/loadingIv" 

 android:layout_centerHorizontal="true"
 android:textSize="20sp"
 android:text="正在加载中.." /> 

</RelativeLayout> 

最后在Activity中调用:

package com.finddreams.runningman; 

import com.example.runningman.R; 

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
/**
 * @Description: 奔跑小人的动画进度条对话框,可以用作加载数据界面
 * @author http://blog.csdn.net/yayun0516
 */
public class MeiTuanManActivity extends Activity {
 private MeituanProgressDialog dialog;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.meituan_progressdialog);
 }
 /**
 * 显示美团进度对话框
 * @param v
 */
 public void showmeidialog(View v){
 dialog =new MeituanProgressDialog(this, "正在加载中",R.anim.frame_meituan);
 dialog.show();
 Handler handler =new Handler();
 handler.postDelayed(new Runnable() { 

 @Override
 public void run() { 

 dialog.dismiss();
 }
 }, 3000);//3秒钟后调用dismiss方法隐藏; 

 } 

} 

最后,让我们的程序跑起来:

ok,跑起来了,你想要加入你的项目,只需要准备两张图片替换下来即可模拟动画。

(0)

相关推荐

  • Android仿QQ、微信聊天界面长按提示框效果

    先来看看效果图 如何使用 示例代码 PromptViewHelper pvHelper = new PromptViewHelper(mActivity); pvHelper.setPromptViewManager(new ChatPromptViewManager(mActivity)); pvHelper.addPrompt(holder.itemView.findViewById(R.id.textview_content)); 使用起来还是很简单的 首先new一个PromptViewH

  • android 弹出提示框的使用(图文实例)

    复制代码 代码如下: //删除全部 else if(id==R.id.btnDelet){ new AlertDialog.Builder(this).setTitle("删除提示框").setMessage("确认删除该数据?").setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, i

  • Android超实用的Toast提示框优化分享

    前言 相信每位Android开发者都用过Toast,都知道是弹出消息的.类似于js里面的alert,C#里面的MesageBox.当然android里面也有dialog,dialog是有焦点的,可与用户交互.而toast是没有焦点的,时间到了自动消失,不能回应用户的交互,下面就跟大家分享下Android中Toast提示框的优化方法. 先看下源码: public class Toast { public static final int LENGTH_SHORT = 0; public stati

  • android 类似微信的摇一摇功能实现思路及代码

    复制代码 代码如下: package com.eboy.testyaoyiyao; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import

  • android 仿微信聊天气泡效果实现思路

    微信聊天窗口的信息效果类似iphone上的短信效果,以气泡的形式展现,在Android上,实现这种效果主要用到ListView和BaseAdapter,配合布局以及相关素材,就可以自己做出这个效果,素材可以下一个微信的APK,然后把后缀名改成zip,直接解压,就可以得到微信里面的所有素材了.首先看一下我实现的效果: 以下是工程目录结构: 接下来就是如何实现这个效果的代码: main.xml,这个是主布局文件,显示listview和上下两部分内容. 复制代码 代码如下: <?xml version

  • Android编程之自定义AlertDialog(退出提示框)用法实例

    本文实例讲述了Android编程自定义AlertDialog(退出提示框)用法,分享给大家供大家参考,具体如下: 有时候我们需要在游戏或应用中用一些符合我们样式的提示框(AlertDialog) 以下是我在开发一个小游戏中总结出来的.希望对大家有用. 先上效果图: 下面是用到的背景图或按钮的图片 经过查找资料和参考了一下例子后才知道,要实现这种效果很简单.就是在设置alertDialog的contentView. 以下的代码是写在Activity下的,代码如下: public boolean o

  • Android实现Toast提示框图文并存的方法

    本文实例讲述了Android实现Toast提示框图文并存的方法.分享给大家供大家参考,具体如下: 程序如下: import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.util.Linkify; import android.view.Gravity; import android.view.View; import android.view.

  • Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用示例

    本文实例讲述了Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用.分享给大家供大家参考,具体如下: 现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoCompleteTextView Widget ,只要搭配ArrayAdapter 就能设计同类似Google 搜索提示的效果. 本例子先在Layout 当中布局一个AutoCom

  • Android仿微信联系人按字母排序

    App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式.既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各位朋友指教. 效果图如下: 实现这个效果,需要三个知识点 : 1:将字符串 进行拼音分类 2:ExpandableListView 二级扩展列表 3:右边字母分类View 我们先一个一个来了解解决方案,再上代码. 实现字母分类: 字母分类又分为三个小要点:一个是将中文转化为拼音,一个是实现按照字母的

  • Android应用中加入微信分享简单方法

    一.申请你的AppID http://open.weixin.qq.com/ 友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二.官网下载libammsdk.jar包 http://open.weixin.qq.com/download/?lang=zh_CN 三.将libammsdk.jar复制到工程的libs目录 四.在需要分享的Activity编写代码 复制代码 代码如下: private IWXAPI wxApi;  //实例化  wxApi = WXAPIF

  • Android实现微信支付功能

    开发Android APP微信支付功能,需要完成三个步骤:第一步生成预支付订单.第二步生成微信支付参数.第三步调起微信APP支付.除了需要审核通过的APP应用外,还需要获得微信支付接口权限,然后获取对应的商户号.API密钥,这两者缺一不可,并且在APP微信支付中使用 获得商户号.API密钥 在微信开放平台中查看审核通过的APP应用,是否申请支付功能,若已申请,登录微信支付|商户平台:http://pay.weixin.qq.com 查看对应的商户号.API密钥 >申请微信支付接口 >登录商户平

随机推荐