
App在与服务器进行网络交互的时候,需要有一个提示的加载框,如图:
此时我们可以自定义一个加载中的对话框,代码如下:
public class LoadingDialog extends Dialog { private static final int CHANGE_Title_WHAT = 1; private static final int CHNAGE_Title_DELAYMILliS = 300; private static final int MAX_SUFFIX_NUMBER = 3; private static final char SUFFIX = '.'; private ImageVIEw iv_route; private TextVIEw detail_tv; private TextVIEw tv_point; private RotateAnimation mAnim; private Handler handler = new Handler() { private int num = 0; public voID handleMessage(androID.os.Message msg) { if (msg.what == CHANGE_Title_WHAT) { StringBuilder builder = new StringBuilder(); if (num >= MAX_SUFFIX_NUMBER) { num = 0; } num++; for (int i = 0; i < num; i++) { builder.append(SUFFIX); } tv_point.setText(builder.toString()); if (isShowing()) { handler.sendEmptyMessageDelayed(CHANGE_Title_WHAT,CHNAGE_Title_DELAYMILliS); } else { num = 0; } } }; }; public LoadingDialog(Context context) { super(context,R.style.Dialog_bocop); init(); } public LoadingDialog(Context context,boolean isTrans) { super(context,isTrans ? R.style.Loading_Dialog_trans : R.style.Dialog_bocop); init(); } private voID init() { setContentVIEw(R.layout.common_dialog_loading_layout); iv_route = (ImageVIEw) findVIEwByID(R.ID.iv_route); detail_tv = (TextVIEw) findVIEwByID(R.ID.detail_tv); tv_point = (TextVIEw) findVIEwByID(R.ID.tv_point); initAnim(); getwindow().setwindowAnimations(R.anim.Alpha_in); } private voID initAnim() { // mAnim = new RotateAnimation(360,Animation.RESTART,0.5f,0.5f); mAnim = new RotateAnimation(0,360,0.5f); mAnim.setDuration(2000); mAnim.setRepeatCount(Animation.INFINITE); mAnim.setRepeatMode(Animation.RESTART); mAnim.setStartTime(Animation.START_ON_FirsT_FRAME); } @OverrIDe public voID show() {//在要用到的地方调用这个方法 iv_route.startAnimation(mAnim); handler.sendEmptyMessage(CHANGE_Title_WHAT); super.show(); } @OverrIDe public voID dismiss() { mAnim.cancel(); super.dismiss(); } @OverrIDe public voID setTitle(CharSequence Title) { if (TextUtils.isEmpty(Title)) { detail_tv.setText("正在加载"); } else { detail_tv.setText(Title); } } @OverrIDe public voID setTitle(int TitleID) { setTitle(getContext().getString(TitleID)); } public static voID dismissDialog(LoadingDialog loadingDialog) { if (null == loadingDialog) { return; } loadingDialog.dismiss(); } } -------------对应的布局如下------------------
<?xml version="1.0" enCoding="utf-8"?> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="160dp" androID:layout_height="160dp" androID:layout_gravity="center" androID:background="@drawable/common_show_dialog" androID:orIEntation="vertical" > <relativeLayout androID:layout_wIDth="fill_parent" androID:layout_height="0dp" androID:layout_weight="3" androID:paddingtop="22dp" androID:gravity="center" > <ImageVIEw androID:ID="@+ID/iv_route" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_centerHorizontal="true" androID:layout_centerVertical="true" androID:background="@drawable/dialog_bocop_loading_rotate_anim_img" /> </relativeLayout> <relativeLayout androID:layout_wIDth="fill_parent" androID:layout_height="0dp" androID:layout_marginBottom="15dp" androID:layout_marginleft="10dp" androID:layout_marginRight="10dp" androID:layout_weight="1" androID:gravity="center_horizontal" > <TextVIEw androID:ID="@+ID/detail_tv" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_toleftOf="@+ID/tv_point" androID:ellipsize="marquee" androID:gravity="center" androID:singleline="true" androID:text="正在加载..." androID:textcolor="#ffffff" androID:textSize="20sp" /> <TextVIEw androID:ID="@+ID/tv_point" androID:layout_wIDth="20dp" androID:layout_height="wrap_content" androID:layout_alignParentRight="true" androID:text="..." androID:textcolor="#ffffff" androID:textSize="20sp" /> </relativeLayout> </linearLayout>
比如在Activity中要实现加载对话框调用 :
LoadingDialog loadingDialog ; if (null == loadingDialog) { loadingDialog = new LoadingDialog(aty); loadingDialog.setonCancel@R_419_6818@ener(this); } loadingDialog.setTitle(“数据加载中”); if (!loadingDialog.isShowing()) loadingDialog.show(); 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android实现自定义加载框的代码示例全部内容,希望文章能够帮你解决Android实现自定义加载框的代码示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)