关闭

自定义dialog

标签: 自定义dialog仿美团动画安卓开发dialog
160人阅读 评论(0) 收藏 举报
分类:

完整代码请看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;
        }
    }
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android 简单的自定义Dialog

效果图 Dialog的详细用法看这篇博客:http://blog.csdn.net/zhuwentao2150/article/details/51478053我们自定义的CustomDialog是通过继承Dialog类并添加自定义的布局来实现的/** * 自定义Dialog弹窗 * Crea...
  • zhuwentao2150
  • zhuwentao2150
  • 2016-08-19 23:25
  • 3507

Android之UI--打造万能自定义Dialog

这里写链接内容>转载请标明出处: http://blog.csdn.net/android_it/article/details/51161038 本文出自:【冯帅的CSDN博客】在我们开发app的时候,很多地方需要弹出一个对话框,我们要不就直接用系统的Dialog或者就是AlertDi...
  • android_it
  • android_it
  • 2016-04-15 13:38
  • 13928

自定义Dialog的简单实现

自定义Dialog的详细步骤(实现自定义样式一般原理) 发表于2016/3/22 22:12:57  1410人阅读 分类: android开发 转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/detai...
  • u014628886
  • u014628886
  • 2016-04-11 22:36
  • 28090

自定义的Dialog

原文地址:http://www.jianshu.com/p/e588d74b5c9f 这是一个自定义的dialog,可以从屏幕底部弹出 第一步、自定义样式 @android:color/transparent tru...
  • qq_28746251
  • qq_28746251
  • 2016-05-18 21:03
  • 797

自定义Dialog的详细步骤(实现自定义样式一般原理)

自定义Dialog的详细步骤(实现自定义样式一般原理)        现在很多App的提示对话框都非常有个性,然而你还用系统的对话框样式,是不是觉得很落后呢,今天我就给大家讲讲怎样自定义自己的Dialog,学会了之后,你就会根据自...
  • oQiHaoGongYuan
  • oQiHaoGongYuan
  • 2016-03-22 22:12
  • 20089

Dialog自定义布局展示

一、Dialog布局实现反馈 1,布局文件 dialog.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout...
  • u013205623
  • u013205623
  • 2016-11-15 19:57
  • 868

如何自定义圆角dialog

1.前俩天的项目中,要求写一个圆角的dialog。当时写出来的dialog,四个角老是出现空白部分,经过一番百度,最后确认了一种方法,在博客中做一个记录。 2.下面我就写一个圆角dialog。这里我是用重写AlertDialog。当然也可以重写dialog,alertdialog和dial...
  • qq_25984015
  • qq_25984015
  • 2016-07-22 23:01
  • 719

Android 自定义Dialog的实现

最新实现了一个自定义Dialog的需求,先看看效果图: 下面说说如何实现:首先需要自定义一个Dialog类,继承自android.app.Dialog类。这个Dialog类就是要显示的对话框,包含双选按钮和单选按钮两种效果。
  • fenggering
  • fenggering
  • 2017-01-25 16:16
  • 9834

Android自定义Dialog的一些问题

Android自定义Dialog的一些问题怎样自定义DialogAndroid自带的Dialog不管是样式还是功能都比较普通。如果有比较特殊的需求,比如自定义的布局、不需要标题栏、不需要按钮以及多个dialog页面切换,就需要自定义Dialog。自定义Dialog一般是对Dialog的重写,比如继承...
  • xiang_freedom
  • xiang_freedom
  • 2016-02-28 00:37
  • 1728

android 自定义dialog 自定义dialog 宽度问题

@Override public void onClick(View v) { LayoutInflater factory = LayoutInflater.from(MainActivity.this); View textEntryView = factory.infla...
  • l419070777
  • l419070777
  • 2013-09-02 11:38
  • 7784
    个人资料
    • 访问:25124次
    • 积分:741
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:5篇
    • 译文:0篇
    • 评论:33条
    最新评论