android 自定义控件AndroidProgressDialog控件自定义

Android ProgressDialog 控件自定义,在项目中,我们经常需要通过网络请求去服务端获取相应的数据,以便于在客户端进行展示。而这个过程是需要网络的,因此就有了等待的过程。对于网络快的童靴,那么等待的时间就短;而对于网络慢的童靴,那么等待的时间就长。因此为了消除童靴们等待的焦虑感,我们需要显示一个rogredialog来提示童靴们,数据...
在项目中,我们经常需要通过网络请求去服务端获取相应的数据,以便于在客户端进行展示。而这个过程是需要网络的,因此就有了等待的过程。对于网络快的童靴,那么等待的时间就短;而对于网络慢的童靴,那么等待的时间就长。因此为了消除童靴们等待的焦虑感,我们需要显示一个progressdialog来提示童靴们,数据正在获取中,请稍候片刻。步骤阅读步骤阅读方法/步骤1在anim文件夹下创建sf_progress_dialog_anim.xml,实现转动的效果:                其中:android:oneshot表示动画只播放一次停留在最后一帧上,当设置为false时,则代表动画循环播放;否则,则代表动画只播放一次。资源文件可到如下链接进行下载:http://download.csdn.net/detail/shenjichao2008/8248073步骤阅读步骤阅读步骤阅读步骤阅读步骤阅读步骤阅读步骤阅读步骤阅读2在values文件夹中创建style.xml,自定义progressdialog的样式:    @null    true    @null    @android:style/Animation.Dialog    stateUnspecified|adjustPan        @android:color/transparent     true  3在layout文件夹中创建sf_view_custom_progress_dialog.xml,自定义progressdilaog的布局:    4创建SFProgrssDialog类,继承Dialog,实现如下:packagecom.snapfish.view;importcom.snapfish.R;importandroid.app.Dialog;importandroid.content.Context;importandroid.graphics.drawable.AnimationDrawable;importandroid.text.TextUtils;importandroid.view.Gravity;importandroid.widget.ImageView;importandroid.widget.TextView;publicclassSFProgrssDialogextendsDialog{ privatestaticSFProgrssDialogm_progrssDialog; privateSFProgrssDialog(Contextcontext,inttheme){ super(context,theme); } publicstaticSFProgrssDialogcreateProgrssDialog(Contextcontext){ m_progrssDialog=newSFProgrssDialog(context, R.style.SF_pressDialogCustom); m_progrssDialog.setContentView(R.layout.sf_view_custom_progress_dialog); m_progrssDialog.getWindow().getAttributes().gravity=Gravity.CENTER; returnm_progrssDialog; } @Override publicvoidonWindowFocusChanged(booleanhasFocus){ if(null==m_progrssDialog) return; ImageViewloadingImageView=(ImageView)m_progrssDialog .findViewById(R.id.sf_iv_progress_dialog_loading); AnimationDrawableanimationDrawable=(AnimationDrawable)loadingImageView .getBackground(); animationDrawable.start(); } publicSFProgrssDialogsetMessage(Stringmsg){ TextViewloadingTextView=(TextView)m_progrssDialog .findViewById(R.id.sf_tv_progress_dialog_loading); if(!TextUtils.isEmpty(msg)) loadingTextView.setText(msg); else loadingTextView.setText(R.string.sf_progress_dialog_image_loading); returnm_progrssDialog; }}5编写显示/隐藏progressdialog的方法:privateSFProgrssDialogm_customProgrssDialog;finalvoidshowCustomProgrssDialog(Stringmsg){ if(null==m_customProgrssDialog) m_customProgrssDialog=SFProgrssDialog .createProgrssDialog(m_parent); if(null!=m_customProgrssDialog){ m_customProgrssDialog.setMessage(msg); m_customProgrssDialog.show(); m_customProgrssDialog.setCancelable(false); } }finalvoidhideCustomProgressDialog(){ if(null!=m_customProgrssDialog){ m_customProgrssDialog.dismiss(); m_customProgrssDialog=null; } }在网络请求之前,调用showCustomProgrssDialog方法,传入显示的message;在网络响应之后,调用hideProgressDialog方法,消除progressdialog。END

本文来自投稿,不代表长河网立场,转载请注明出处: http://changhe99.com/a/MOrejBbw2o.html

(0)

相关推荐