效果图镇楼 
 

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

compile 'com.flyco.dialog:FlycoDialog_Lib:1.3.2@aar'

然后我们先写一个弹窗的布局,非常简单一个大的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();

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

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

  1. Android ListView简单实用

    layout创建: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ ...

  2. android Mvp简单实用

    View 对应于Activity,负责View的绘制以及与用户交互Model 依然是业务逻辑和实体模型Presenter 负责完成View于Model间的交互 模拟客户端的登录操作,并实现登录成功与登 ...

  3. Android ProgressDialog 简单实用

    ProgressDialog progressDialog; @SuppressLint("HandlerLeak") Handler handler1 = new Handler ...

  4. C#邮件发送类 简单实用 可自定义发件人名称

    上图看效果 MailHelper: public class MailHelper { public bool SendMail(MailSender sender,out string errorM ...

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

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  6. Android自定义属性简单使用说明

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_attrs.html 本文从实用角度说明Android自定义属性的基本使用流程,清晰 ...

  7. Android酷炫实用的开源框架(UI框架)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  8. Android酷炫实用的开源框架——UI框架(转)

    转载别人整理好的文章,列出了很多炫酷的UI开源设计 原文地址:http://www.androidchina.net/1992.html 1.Side-Menu.Android分类侧滑菜单,Yalan ...

  9. Android酷炫实用的开源框架(UI框架) 转

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

随机推荐

  1. 2A - Stone

    任意一堆移动过后的石子都是整数x的倍数, 那么石子总数显然也应该是x的倍数, 换句话说,x必为石子数总和的一个质因子. 题目要求移动次数尽量小,那么x也应该尽量小. 所以选择石子数总和的最小质因子. ...

  2. Flask之flask_script

    flask端口占用 解决方案: lsof -i:5000 #查询是哪个进程占用的 kill PID 杀掉进程 flask_script之Manager类 from flask import Flask ...

  3. LightOJ - 1245 根号n暴力

    打表或者画个图可以看出i>根号n时每个i的贡献值相差很小,可以利用公式优化(函数C) 但是注意不能一整段使用公式,否则复杂度还是会劣化到O(n)(显然对gongxian只能逐步递减) 网上看了不 ...

  4. 前端PostJosn,后端转化相应的类

    /// <summary> /// JsonPost特性类 /// </summary> [AttributeUsage(AttributeTargets.Method, In ...

  5. SpringMVC 商城项目

    1.  商城视频中有word   笔记文档

  6. [转] Java8 日期/时间(Date Time)API指南

    [From] http://www.importnew.com/14140.html Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间 ...

  7. 从fis中得来的数据结构,Object版,

    /* * config * caoke */ 'use strict'; //You can't use merge in util.js function merge(source, target) ...

  8. mysql PXC集群方案总结

    同时写集群内的所有机器 写性能依赖最慢的那个机器 读性能提高X倍

  9. Sqlite CodeFirst的初级实现

    示例实体: using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnn ...

  10. 转 UTL_FILE Throws ORA-29284 Or ORA-29283 When Attempting To READ File

    APPLIES TO: PL/SQL - Version 9.2.0.8 and laterInformation in this document applies to any platform.* ...