Android實戰簡易教程-第五十六槍(類比美團用戶端進度提示框),android實戰

來源:互聯網
上載者:User

Android實戰簡易教程-第五十六槍(類比美團用戶端進度提示框),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);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();initData();}private void initData() {mImageView.setBackgroundResource(mResid);// 通過ImageView對象拿到背景顯示的AnimationDrawablemAnimation = (AnimationDrawable) mImageView.getBackground();mImageView.post(new Runnable() {@Overridepublic 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;@Overrideprotected 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() {@Overridepublic void run() {dialog.dismiss();}}, 3000);//3秒鐘後調用dismiss方法隱藏;}}

最後,讓我們的程式跑起來:


ok,跑起來了,你想要加入你的項目,只需要準備兩張圖片替換下來即可類比動畫。

源碼免費下載

最後關注我一下唄,謝謝!


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.