首先是自定义dialog类,项目中有,这里给出几个主要的方法。
public void onWindowFocusChanged(boolean hasFocus) {
ImageView imageView = (ImageView) findViewById(R.id.spinnerImageView);
// 获取ImageView上的动画背景
AnimationDrawable spinner = (AnimationDrawable) imageView.getBackground();
// 开始动画
spinner.start();
}
这个是当窗口获得焦点的时候执行动画。
public void setMessage(CharSequence message) {
if (message != null && message.length() > 0) {
findViewById(R.id.message).setVisibility(View.VISIBLE);
TextView txt = (TextView) findViewById(R.id.message);
txt.setText(message);
txt.invalidate();
}
}
这个类是设置diaolog动画旁边的文字,需要什么就设置什么。
public static CustomProgressDialog show(Context context, CharSequence message, boolean cancelable,
OnCancelListener cancelListener) {
CustomProgressDialog dialog = new CustomProgressDialog(context, R.style.Custom_Progress);
dialog.setTitle("");
dialog.setContentView(R.layout.progress_dialog_custom);
if (message == null || message.length() == 0) {
dialog.findViewById(R.id.message).setVisibility(View.GONE);
} else {
TextView txt = (TextView) dialog.findViewById(R.id.message);
txt.setText(message);
}
// 按返回键是否取消
dialog.setCancelable(cancelable);
//点击dialog外部是否取消
dialog.setCanceledOnTouchOutside(cancelable);
// 监听返回键处理
dialog.setOnCancelListener(cancelListener);
// 设置居中
dialog.getWindow().getAttributes().gravity = Gravity.CENTER;
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
// 设置背景层透明度
lp.dimAmount = 0.2f;
dialog.getWindow().setAttributes(lp);
// dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
dialog.show();
return dialog;
}
这个就是显示diaolog的方法了,代码里面注释写的很清楚,每一行代码是干什么用的。我这里要说明的是
// 按返回键是否取消
dialog.setCancelable(cancelable);
//点击dialog外部是否取消
dialog.setCanceledOnTouchOutside(cancelable);
这里是设置点返回,点外部dialog是否消失的代码,需要做不同操作的可以在这里改,比方说点返回dialog消失,但是点外部dialog不消失。设置不同的boolean值就好了。
至于简单的timer计时器就更简单了,就是timer与timertask,在mainActivity一看就明白。需要说明的是改变UI必须在主线程里面,所以TimerTask必须要跟handler一起使用