之前写过一个alertdialog加载gif动画的程序,但其实在调节的过程中遇到了很多问题,最重要的就是,无法让动画跟alertdialog框默认样式完美融合,总是多出来空白的部分,图片尺寸也失真,
至此,知道alertdialog对话框不适合做自定义动画,它的样式比较局限于对话框.所以我用dialog重要实现了一次。。过程没太大不同,但它提供的自定义样式文件帮助还是很大的;
这边我就简写一下:
一.在res新建drawable文件夹,导入gif的帧图片集合,建animail_pro.xml,设置编写图片集;
二.在value文件夹里建一个style.xml样式文件,定义dialog样式
style.xml
true
@null
true
false
@android:color/black
@null
true
三.java代码部分
Dialog dialog=null;
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//进程加载
dialog= new Dialog(LinkMap.this, R.style.Dialog);//去白框dialog里面具体设置样式
dialog.setContentView(GetView());
dialog.show();
Window dialogWindow=dialog.getWindow();//AlertDialog.Builder builder = new Builder(LinkMap.this);//builder.setView(GetView());//dialog_pro=builder.create();//dialog_pro.show();
//定义dialog大小跟位置(默认Gravity是局中)
//Window dialogWindow = dialog_pro.getWindow();
//WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//dialogWindow.setGravity(Gravity.CENTER_VERTICAL| Gravity.TOP);
//lp.width = 193; //193 宽度
//lp.height = 126; // 126高度
//dialogWindow.setAttributes(lp);
//dialog_pro.setView(GetView(),0,0,0,0);//去除边框
//设置窗口的大小
dialogWindow.setLayout(193,126);
}//animal view
public View GetView()
{
View view=super.getLayoutInflater().inflate(R.layout.progress,(ViewGroup) findViewById(R.id.progress_img));
final ImageView iv=(ImageView)view.findViewById(R.id.animal_img);
iv.setImageResource(R.drawable.animal_pro);//绑定数据源
//启动 动画,因为如果没有启动方法,它没办法自己启动
iv.post(newRunnable() {
@Override
publicvoidrun() {//TODO Auto-generated method stub
AnimationDrawable animationDrawable=(AnimationDrawable)iv.getDrawable();//获取imageview绘画
animationDrawable.start();//开始绘画
}
});returnview;
}
在要关闭的地方再dialog.dismiss一下就ok了