Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇
效果图镇楼
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篇的更多相关文章
- Android ListView简单实用
layout创建: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ ...
- android Mvp简单实用
View 对应于Activity,负责View的绘制以及与用户交互Model 依然是业务逻辑和实体模型Presenter 负责完成View于Model间的交互 模拟客户端的登录操作,并实现登录成功与登 ...
- Android ProgressDialog 简单实用
ProgressDialog progressDialog; @SuppressLint("HandlerLeak") Handler handler1 = new Handler ...
- C#邮件发送类 简单实用 可自定义发件人名称
上图看效果 MailHelper: public class MailHelper { public bool SendMail(MailSender sender,out string errorM ...
- LogCook 一个简单实用的Android日志管理工具
众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...
- Android自定义属性简单使用说明
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_attrs.html 本文从实用角度说明Android自定义属性的基本使用流程,清晰 ...
- Android酷炫实用的开源框架(UI框架)
Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...
- Android酷炫实用的开源框架——UI框架(转)
转载别人整理好的文章,列出了很多炫酷的UI开源设计 原文地址:http://www.androidchina.net/1992.html 1.Side-Menu.Android分类侧滑菜单,Yalan ...
- Android酷炫实用的开源框架(UI框架) 转
Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...
随机推荐
- 带权并查集 - How Many Answers Are Wrong
思路: 带权并查集+向量偏移 #include <iostream> using namespace std; int n, m; ]; ]; // 到根节点的距离 ; void init ...
- JUC包下Semaphore学习笔记
在Java的并发包中,Semaphore类表示信号量.Semaphore内部主要通过AQS(AbstractQueuedSynchronizer)实现线程的管理.Semaphore有两个构造函数,参数 ...
- echart使用与后台交互
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- rest-assured的根路径(root path)和URL编码(URL Encoding)
一.根路径(Root path) 为了避免在body方法中使用重复的路径来断言,我们可以指定一个根路径(root path),比如: 我们以前的写法是: when(). get("/some ...
- 静态区间第K小(整体二分、主席树)
题目链接 题解 主席树入门题 但是这里给出整体二分解法 整体二分顾名思义是把所有操作放在一起二分 想想,如果求\([1-n]\)的第\(k\)小怎么二分求得? 我们可以二分答案\(k\), \(O(n ...
- 最近研究了一个.NET的DHT网络搜索引擎,顺便重新整理了下引擎思路,供大家分享讨论下。
最近研究了一个.NET的DHT网络搜索引擎,顺便重新整理了下引擎思路,供大家分享讨论下.
- Week 3: Structured Types 5. Tuples and Lists Exercise: odd tuples
Exercise: odd tuples 5/5 points (graded) ESTIMATED TIME TO COMPLETE: 5 minutes Write a procedure cal ...
- .net core EF Cde First
注意事项记录: public class StudentsModel { /// <summary> /// 一定需要id /// 一般用model名称+id作为表主键 /// 或者直接用 ...
- PIE SDK分类统计
1. 算法功能简介 分类统计功能是将分类后的结果统计输出. PIE SDK支持算法功能的执行,下面对分类统计算法功能进行介绍. 2. 算法功能实现说明 2.1. 实现步骤 第一步 算法参数设置 第二步 ...
- 安装软件或运行软件时提示缺少api-ms-win-crt-runtime库解决方法
最近碰到一个问题,在我软件安装或运行时会提示缺少api-ms-win-crt-runtime-|1-1-0.dll 当然第一个想到的是运行库没有装,但是很清楚的是我的电脑是装过vc_redist_20 ...