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

  

应用程序在与服务器进行网络交互的时候,需要有一个提示的加载框,如图:

  

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

  

此时我们可以自定义一个加载中的对话框,代码如下:
  

        公共类{LoadingDialog扩展对话框   私有静态最终int CHANGE_TITLE_WHAT=1;   私有静态最终int CHNAGE_TITLE_DELAYMILLIS=300;   私有静态最终int MAX_SUFFIX_NUMBER=3;   私有静态最终char后缀='。';         私人ImageView iv_route;   私人TextView detail_tv;   私人TextView tv_point;   私人RotateAnimation mAnim;         私人处理程序处理程序=new处理程序(){   私人int num=0;         公共空间handleMessage (android.os。消息味精){   如果(味精。什么==CHANGE_TITLE_WHAT) {   StringBuilder builder=new StringBuilder ();   如果(num祝辞=MAX_SUFFIX_NUMBER) {   num=0;   }   num + +;   for (int i=0;我& lt;num;我+ +){   builder.append(后缀);   }   tv_point.setText (builder.toString ());   如果(isShowing ()) {   处理程序。sendEmptyMessageDelayed (CHANGE_TITLE_WHAT CHNAGE_TITLE_DELAYMILLIS);   }   其他{   num=0;   }   }   };   };         公共LoadingDialog(上下文语境){   超级(上下文,R.style.Dialog_bocop);   init ();   }         公共LoadingDialog(上下文语境,布尔isTrans) {   超级(上下文,isTrans & # 63;R.style。Loading_Dialog_trans: R.style.Dialog_bocop);   init ();   }         私人空间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);   }         私人空间initAnim () {//mAnim=new RotateAnimation(360 0,动画。重新启动,0.5 f,动画。重新启动,0.5度);   mAnim=new RotateAnimation(0 360动画。重新启动,0.5 f,动画。重新启动,0.5度);   mAnim.setDuration (2000);   mAnim.setRepeatCount (Animation.INFINITE);   mAnim.setRepeatMode (Animation.RESTART);   mAnim.setStartTime (Animation.START_ON_FIRST_FRAME);   }         @Override   公共空间展示(){//在要用到的地方调用这个方法   iv_route.startAnimation (mAnim);   handler.sendEmptyMessage (CHANGE_TITLE_WHAT);   super.show ();   }         @Override   公共空间把(){   mAnim.cancel ();   super.dismiss ();   }         @Override   公共空间setTitle (CharSequence进行标题){   如果(TextUtils.isEmpty(标题)){   detail_tv.setText(“正在加载”);   }   其他{   detail_tv.setText(标题);   }   }         @Override   公共空间setTitle (int titleId) {   setTitle (getContext () .getString (titleId));   }         公共静态孔隙dismissDialog (LoadingDialog LoadingDialog) {   如果(null==loadingDialog){返回;}   loadingDialog.dismiss ();   }   }   之前      

- - - - - - - - - - - - -对应的布局如下- - - - - - - - - - - - - - - - - -,,
  

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   LinearLayout & lt;   xmlns: android=" http://schemas.android.com/apk/res/android "   android: layout_width=" 160 dp”   android: layout_height=" 160 dp”   android: layout_gravity="中心"   android:背景=" @drawable/common_show_dialog”   面向android:=按怪薄北?         & lt;使用   android: layout_width="宽和"   android: layout_height=" 0 dp”   android: layout_weight=" 3 "   android: paddingTop=" 22 dp "   android:重力="中心"的在         & lt; 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:背景=癅drawable/dialog_bocop_loading_rotate_anim_img”/比;   & lt;/RelativeLayout>         & lt;使用   android: layout_width="宽和"   android: layout_height=" 0 dp”   android: layout_marginBottom=" 15 dp "   android: layout_marginLeft=" 10 dp”   android: layout_marginRight=" 10 dp”   android: layout_weight=" 1 "   android:重力=癱enter_horizontal”比;         & lt; TextView   android: id=癅 + id/detail_tv”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_toLeftOf=癅 + id/tv_point”   android: ellipsize=罢信啤?   android:重力="中心"   android:单行模式=" true "   android:文本="正在加载……”   android:输入textColor=" # ffffff "   android: textSize=" 20 sp/比;         & lt; TextView   android: id=癅 + id/tv_point”   android: layout_width=" 20 dp”   android: layout_height=" wrap_content "   android: layout_alignParentRight=" true "   android:文本="…"   android:输入textColor=" # ffffff "   android: textSize=" 20 sp/比;   & lt;/RelativeLayout>   & lt;/LinearLayout>   

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