Android实现自定义加载框的代码示例

Android实现自定义加载框的代码示例,第1张

概述App在与服务器进行网络交互的时候,需要有一个提示的加载框,如图:此时我们可以自定义一个加载中的对话框,代码如下:

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实现自定义加载框的代码示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1146989.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存