一、前言
好久没写东西了,今天带来一个小demo,仿造微信的阻塞对话框,列一下用到的知识点:
1.自定义样式。
2.自定义shape背景和selector。
3.动画。
二、效果
废话不多说,直接看图。
三、编码与实现
1.对话框样式:
<style name="WeixinLoadingDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
2.对话框内部实现:
public class LoadingDialog extends Dialog { public LoadingDialog(Context context) { super(context,R.style.WeixinLoadingDialog); this.context = context; initDialog(context); } private ImageView ivProgress; private TextView tvInfo; private Context context; private void initDialog(Context context) { setContentView(R.layout.loading_dialog_view); ivProgress = (ImageView)findViewById(R.id.img); tvInfo = (TextView)findViewById(R.id.tipTextView); // 显示文本 tvInfo.setText("正在加载..."); } public void showDialog(){ Animation animation = AnimationUtils.loadAnimation(context, R.anim.dialog_load_animation); // 显示动画 ivProgress.startAnimation(animation); show(); } public void cancelDialog(){ ivProgress.clearAnimation(); this.cancel(); } public void setProgressText(String text){ tvInfo.setText(text); } }
源码下载