仿美团加载数据帧动画

来源:互联网 发布:vidown视频下载软件 编辑:程序博客网 时间:2024/05/21 10:58


尊重原创,本文转自:http://blog.csdn.net/android_cll/article/details/68957491


一:先来张效果图(这里是GIF动画,我就截屏的所有没有动画,实际是动的):


二:实现步骤:

1、xml布局、

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:id="@+id/textview"        android:layout_width="match_parent"        android:layout_height="50dp"        android:layout_alignParentBottom="true"        android:layout_margin="20dp"        android:background="@drawable/animationtk"        android:gravity="center"        android:text="点击弹出动画"        android:textColor="#fff"        android:textSize="18dp" /></RelativeLayout>

2.activity代码、

package cll.com.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;/** *  @Description 奔跑小人的动画弹框,可以用作加载数据界面 *  2017-4-3 http://blog.csdn.net/android_cll */public class RuningManActivity extends Activity implements View.OnClickListener {    private TextView textview;//点击按钮    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.ac_runing_man);        initlayout();    }    /**     * 实例化     */    private void initlayout() {        textview = (TextView) findViewById(R.id.textview);        textview.setOnClickListener(this);    }    /**     * 显示美团进度对话框     *     * @param v     */    public void showmeidialog(View v) {        CustomProgressDialog dialog = new CustomProgressDialog(this, "正在加载中......", R.anim.animation);        dialog.setCanceledOnTouchOutside(false);//设置是否可以点击外部消失        dialog.setCancelable(false);//设置是否可以按退回键取消        dialog.show();    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.textview:                showmeidialog(view);                break;        }    }}
3.自定义弹框工具类、

package cll.com.myapplication;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;/** * @Description:自定义加载数据弹框 * @author 2017-4-3 http://blog.csdn.net/android_cll */public class CustomProgressDialog extends ProgressDialog {   private AnimationDrawable mAnimation;   private ImageView mImageView;   private String mLoadingTip;   private TextView mLoadingTv;   private int mResid;   public CustomProgressDialog(Context context, String content, int id) {      super(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();      // 为了防止在onCreate方法中只显示第一帧的解决方案之一      mImageView.post(new Runnable() {         @Override         public void run() {            mAnimation.start();         }      });      mLoadingTv.setText(mLoadingTip);   }   private void initView() {      setContentView(R.layout.progress_dialog);      mLoadingTv = (TextView) findViewById(R.id.loadingTv);      mImageView = (ImageView) findViewById(R.id.loadingIv);   }}
4.自定义弹框的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/animation"/>    <TextView        android:id="@+id/loadingTv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"      android:layout_alignBottom="@+id/loadingIv"      android:textColor="#fff"      android:layout_centerHorizontal="true"      android:textSize="20sp"        android:text="正在加载中.." /></RelativeLayout>
5.anim文件下的帧动画文件

<?xml version="1.0" encoding="utf-8"?>  <animation-list      android:oneshot="false"    xmlns:android="http://schemas.android.com/apk/res/android"     >       <item android:drawable="@mipmap/progress_loading_image" android:duration="150"/>     <item android:drawable="@mipmap/progress_loading_imagey" android:duration="150"/></animation-list>   

-------------------------到此加载数据弹框的帧动画功能就实现了,不喜勿喷,都有注释就不用解释太多、

-------------------------最后附上源码:http://download.csdn.net/download/android_cll/9802503





1 0
原创粉丝点击