自定义dialog
Posted Gradle官方文件
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义dialog相关的知识,希望对你有一定的参考价值。
完整代码请看github:https://github.com/anzhuojinjie/MeiTuanDialog
在drawable文件夹中创建frame_meituan动画资源xml文件
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
//帧动画的自动执行:oneshot 。 如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。
<item android:drawable="@drawable/progress_loading_image_01"
android:duration="150"/>
<item android:drawable="@drawable/progress_loading_image_02"
android:duration="150"/>
</animation-list>
创建dialog的layout文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ImageView
android:id="@+id/iv_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/frame_meituan"/>
<TextView
android:id="@+id/tv_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/iv_loading"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:text="正在加载中.." />
</RelativeLayout>
自定义dialog
package com.hsg.meituandialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
/**
* Created by Joe on 2017/1/3.
*/
public class MyDialog extends ProgressDialog
private Context mContext;
private String mLoadingTip;
private ImageView iv_loading;
private TextView tv_loading;
private AnimationDrawable mAnimation;
public MyDialog(Context context,String content)
super(context);
this.mContext = context;
this.mLoadingTip = content;
/**
* ProgressDialog不是ViewGroup,自定义布局通过setContentView方法加载进来自定义布局。要重写onCreate
* 对话框创建的时候调用
*/
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
this.setCancelable(false);//设置点击屏幕不能消失
initview();
initdata();
private void initview()
setContentView(R.layout.progress_dialog);
iv_loading = ((ImageView) findViewById(R.id.iv_loading));
tv_loading = ((TextView) findViewById(R.id.tv_loading));
private void initdata()
// 通过ImageView对象拿到背景显示的AnimationDrawable
mAnimation = ((AnimationDrawable) iv_loading.getBackground());
//主界面点击登录,立即调用这里的动画显示功能
mAnimation.start();
//设置正在加载中信息
tv_loading.setText(mLoadingTip);
@Override
public void dismiss()
super.dismiss();
//对话框关闭,同时关闭掉动画。节约资源
mAnimation.stop();
mAnimation = null;
调用
public class MainActivity extends AppCompatActivity
private MyDialog myDialog;
private Handler handler = new Handler()
@Override
public void handleMessage(Message msg)
super.handleMessage(msg);
switch (msg.what)
case 0x01:
myDialog.dismiss();
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
break;
default:
break;
;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void btnClick(View view)
switch (view.getId())
case R.id.btn_loading_start:
myDialog = new MyDialog(this,"正在登录。。。");
myDialog.show();
handler.sendEmptyMessageDelayed(0x01,5000);
break;
default:
break;
![](https://image.cha138.com/20220428/4c59f0816fe8413d9f07776e4600f1a0.jpg)
![](https://image.cha138.com/20220428/e5123d7dd638431f93720f21882d43f7.jpg)
以上是关于自定义dialog的主要内容,如果未能解决你的问题,请参考以下文章