您的位置:首页 > 移动开发 > Android开发

Android 自定义带动画的dialog

2017-11-02 11:48 417 查看
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"></i
4000
tem>

<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 ,然后就可以有各种背景自己调控
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: