Android 自定义带动画的dialog

来源:互联网 发布:linux怎么创建用户密码 编辑:程序博客网 时间:2024/05/01 17:49

1是通过直接加载gif实现,使用可以加载gif的ImageView 或者 用Glide 这种能够加载gif的框架
2用桢动画做
这里弄个桢动画的:
首先drawable 建立一个xml文件,名字是animation1

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"                android:oneshot="false"    >    <item        android:drawable="@mipmap/load1"        android:duration="150"></item>    <item        android:drawable="@mipmap/load2"        android:duration="150"></item>    <item        android:drawable="@mipmap/load3"        android:duration="150"></item>    <item        android:drawable="@mipmap/load4"        android:duration="150"></item>    <item        android:drawable="@mipmap/load5"        android:duration="150"></item>    <item        android:drawable="@mipmap/load6"        android:duration="150"></item>    <item        android:drawable="@mipmap/load7"        android:duration="150"></item>    <item        android:drawable="@mipmap/load8"        android:duration="150"></item>    <item        android:drawable="@mipmap/load9"        android:duration="150"></item>    <item        android:drawable="@mipmap/load10"        android:duration="150"></item>    <item        android:drawable="@mipmap/load11"        android:duration="150"></item>    <item        android:drawable="@mipmap/load12"        android:duration="150"></item>    <item        android:drawable="@mipmap/load13"        android:duration="150"></item>    <item        android:drawable="@mipmap/load14"        android:duration="150"></item>    <item        android:drawable="@mipmap/load15"        android:duration="150"></item>    <item        android:drawable="@mipmap/load16"        android:duration="150"></item>    <item        android:drawable="@mipmap/load17"        android:duration="150"></item>    <item        android:drawable="@mipmap/load18"        android:duration="150"></item>    <item        android:drawable="@mipmap/load19"        android:duration="150"></item>    <item        android:drawable="@mipmap/load20"        android:duration="150"></item>    <item        android:drawable="@mipmap/load21"        android:duration="150"></item>    <item        android:drawable="@mipmap/load22"        android:duration="150"></item>    <item        android:drawable="@mipmap/load23"        android:duration="150"></item>    <item        android:drawable="@mipmap/load24"        android:duration="150"></item></animation-list>

然后自定义布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">    <RelativeLayout        android:layout_width="230dp"        android:layout_height="90dp"        android:layout_gravity="center"        android:background="@drawable/radio_layout"        >        <ImageView            android:id="@+id/dialog_showview"            android:layout_width="70dp"            android:layout_height="70dp"            android:layout_centerVertical="true"            android:layout_marginStart="10dp"            />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:layout_marginStart="15dp"            android:layout_toRightOf="@id/dialog_showview"            android:text="正在加载"            android:textColor="@color/gray3"            android:textSize="14sp"            />    </RelativeLayout></LinearLayout>

然后自定义Dialog
在style中设置dialog显示的样式,然后从构造器里面设置这个样式,
然后可以通过window 对象设置宽高和显示的位置,包括底部,顶部,或者是中间

package com.test.posttime2.Activities;import android.app.Dialog;import android.content.Context;import android.graphics.drawable.AnimationDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.test.posttime2.R;/** * Created by Administrator on 2017/11/2. */public class MyDialog extends Dialog {    Context context;    private AnimationDrawable animationDrawable;    public MyDialog(Context context) {        super(context, R.style.MyDialog);        this.context = context;    }    public MyDialog(Context context, int themeResId) {        super(context, themeResId);    }    protected MyDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {        super(context, cancelable, cancelListener);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.dialog_item);//        initView();//通过gif 实现        initByanimation();    }    //通过真动画实现加载    private void initByanimation() {        ImageView image = (ImageView) findViewById(R.id.dialog_showview);        //设置动画的显示        image.setImageResource(R.drawable.animation1);        animationDrawable = (AnimationDrawable) image.getDrawable();        animationDrawable.start();        windowDeploy();    }    private void initView() {        ImageView image = (ImageView) findViewById(R.id.dialog_showview);        Glide.with(context).load(R.mipmap.showwaiting).into(image);        windowDeploy();    }    private Window window = null;    //设置窗口显示    public void windowDeploy() {        window = getWindow(); //           window.setGravity(Gravity.BOTTOM|Gravity.CENTER);   //     window.setWindowAnimations(R.style.popup_window_anim);     //   window.setBackgroundDrawableResource(R.drawable.suject_bg);       // window.setGravity(Gravity.CENTER | Gravity.CENTER);        window.setBackgroundDrawableResource(R.color.transparent1);        WindowManager.LayoutParams wl = window.getAttributes();        //根据x,y坐标设置窗口需要显示的位置        window.setAttributes(wl);    }}

然后使用时就直接new 然后 show就行了
其他的如果要设置dialog的背景图片,需要在windowDeploy() 里面设置background ,然后就可以有各种背景自己调控

原创粉丝点击