Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇

效果图镇楼 
 

FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧。 
首先我们还是先添加依赖。

compile ‘com.flyco.dialog:FlycoDialog_Lib:[email protected]‘

然后我们先写一个弹窗的布局,非常简单一个大的ImageView展示图片,上面放一个小的ImageView用于点击使弹框消失。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <ImageView
        android:id="@+id/iv_ad"
        android:layout_width="278dp"
        android:layout_height="392dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />

    <ImageView
        android:id="@+id/ad_back"
        android:layout_width="278dp"
        android:layout_height="45dp"
        android:layout_alignRight="@id/iv_ad"
        android:layout_alignTop="@id/iv_ad"
        android:background="#01ffffff"
        />
</RelativeLayout>

然后我们来写弹框的逻辑代码,我会用注释的方式来解释代码的功能。

public class AdDialog extends BaseDialog<AdDialog> {
    private Context context;
    private ImageView iv_ad;
    private ImageView back;

    public AdDialog(Context context) {
        super(context);
        this.context = context;
    }

    //该方法用来出来数据初始化代码
    @Override
    public View onCreateView() {
        widthScale(0.85f);
        //填充弹窗布局
        View inflate = View.inflate(context, R.layout.addialog, null);
        //用来放整个图片的控件
        iv_ad = (ImageView) inflate.findViewById(R.id.iv_ad);
        //放在透明部分和错号上的隐形控件,用来点击使弹窗消失
        back = (ImageView) inflate.findViewById(R.id.ad_back);
        //用来加载网络图片,填充iv_ad控件,注意要添加网络权限,和Picasso的依赖和混淆
        Picasso.with(context)
                .load("https://img-blog.csdn.net/20170906094014301?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzY2MjE5OTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast")
                .into(iv_ad);

        return inflate;
    }
    //该方法用来处理逻辑代码
    @Override
    public void setUiBeforShow() {
        //点击弹窗相应位置,处理相关逻辑。
        iv_ad.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,"哈哈",Toast.LENGTH_SHORT).show();
                //处理完逻辑关闭弹框的代码
                dismiss();
            }
        });
        //点×关闭弹框的代码
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //关闭弹框的代码
                dismiss();
            }
        });
    }
}

最后来写启动弹框的代码

AdDialog adDialog = new AdDialog(this);
        adDialog.onCreateView();
        adDialog.setUiBeforShow();
        //点击空白区域能不能退出
        adDialog.setCanceledOnTouchOutside(true);
        //按返回键能不能退出
        adDialog.setCancelable(true);
        adDialog.show();

如果需要处理比较复杂的逻辑可通过AdDialog的构造方法像弹窗内传值,例如

弹框逻辑代码的构造方法

 public AdDialog(Context context,String ivurl,String title,String adurl) {
        super(context);
        this.context = context;
        this.ivurl = ivurl;
        this.title = title;
        this.adurl = adurl;
    }

启动代码时传入数据

      AdDialog adDialog = new AdDialog(getActivity(),"图片网址","标题","广告网址");
        adDialog.onCreateView();
        adDialog.setUiBeforShow();
        //点击空白区域能不能退出
        adDialog.setCanceledOnTouchOutside(true);
        //按返回键能不能退出
        adDialog.setCancelable(true);
        adDialog.show();

如果还有什么不明白的地方可在博客下留言。

原文地址:https://www.cnblogs.com/zhujiabin/p/9768109.html

时间: 2024-10-06 06:34:28

Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇的相关文章

Android ListView简单实用

layout创建: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:orientation="vertical" andro

LogCook 一个简单实用的Android日志管理工具

众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能达到事半功倍的效果.开发者必须要明白日志的价值和意义,万万不可忽略和轻视. LogCook是一款非常简洁实用的Android日记管理工具.LogCook的中文翻译是日志厨师,你可以把它看作是一个日志美食家. 特点 作为一款日志管理工具它最大的特点就是简单实用,与Android原生的日志功能相比较它具

自定义Android Dialog

private void showDialog() { mDialog = new Dialog(this); mDialog.setCanceledOnTouchOutside(true); Window dialogWindow = mDialog.getWindow(); dialogWindow.setBackgroundDrawable(new ColorDrawable(0)); dialogWindow.setContentView(R.layout.set_public_clie

Android基础入门教程——2.4.2 ListView简单实用

Android基础入门教程--2.4.2 ListView简单实用 标签(空格分隔): Android基础入门教程 本节引言: 一口气把Android入门网络编程的章节写完了,本节我们来继续学习没有讲完的UI控件部分, 回顾上一节,我们介绍了Adapter适配器的概念,然后学习了三个最简单的适配器的使用: ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,而本节给大家讲解的是第一个 需搭配Adapter使用的UI控件:ListView,不过在版本中被R

【Android进阶】Junit单元测试环境搭建以及简单实用

单元测试的目的 首先,Junit单元测试要实现的功能,就是用来测试写好的方法是否能够正确的执行,一般多用于对业务方法的测试. 单元测试的环境配置 1.在AndroidManifest清单文件的Application节点下,引入单元测试使用的库 2.在AndroidManifest清单文件与Application节点平行的节点中,添加instrumentation节点 下面是一个完整的配置的代码 <manifest xmlns:android="http://schemas.android.

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

开发一个简单实用的android紧急求助软件

之前女朋友一个人住,不怎么放心,想找一个紧急求助的软件,万一有什么突发情况,可以立即知道.用金山手机卫士的手机定位功能可以知道对方的位置状态,但不能主动发送求助信息,在网上了很多的APK,都是鸡肋功能,都需要解锁.并打开软件,真正的紧急情况可能没有时间来完成这一系列操作. 于是我自己做了一个这样的软件,在紧急情况下,连续按电源键5次即可发送求救短信和位置信息给事先指定的用户,这个操作在裤兜里就能完成.原理很简单,就是设置监听器捕获屏幕的开关,在较短的时间内屏幕开关达到一定次数后,触发手机定位,定

Android 内容提供者(ContentProvider)的简单实用

Android 中的数据库是对应用私有的,自己是无法使用别的应用的数据库的.但是往往有需求要我们使用另外一个应用或者系统应用的数据,这时候就彰显了内容提供者,ContentPrivider的作用,他就是两个应用数据的桥梁,通过内容提供者和内容接受者我们可以在不同应用间传递数据. ContentPrivider也可以视为一种数据存储.它存储数据的方式和使用它的应用程序无关,重要的是应用如何以一致的编程接口,来访问存储其中的数据.内容提供者与数据库的使用差不多,也可以增删改查.而且数据可以存储于数据

Android自定义view教程06--Activity的绘制流程简单分析(基于android 4.0源码进行分析)

要明白这个流程,我们还得从第一部开始,大家都知道 在activity里面 setcontentview 调用结束以后 就可以看到程序加载好我们的布局文件了,从而让我们在手机上看到这个画面. 那么我们来看一下这个源码是如何实现的. 1 /** 2 * Set the activity content from a layout resource. The resource will be 3 * inflated, adding all top-level views to the activit