应用程序在与服务器进行网络交互的时候,需要有一个提示的加载框,如图:
此时我们可以自定义一个加载中的对话框,代码如下:
公共类{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实现自定义加载框的代码示例