终于也是自己封装一些东西了,不管烂不烂,还是自我鼓励了一把!(之前学maven发布也是这个目的)

开源地址: FanChael/CommonPopupWindow

弹窗效果如下:

@tip后面会逐渐完善吧,目前先暂停一小段时间的更新。(基本使用可以了,后面打算用其中的更新弹窗模块+rx家族+json->做一个App更新的框架,新的项目搭建起来就快多了);

@tip注册登录弹窗每家样式不一样,而且目前主流的是页面式的,就是全屏的那种,所以注册登录如果有比较原生的国外的样式,打算借鉴一下

@tip再加强下自身的学习,加强下设计模式,加强下源码,加强下他人好的框架的学习,要加强的东西忒多了!

下面就简单介绍下使用方式吧(新建一个工程试试):

引入工程:

    //未引入记得引入 - 注册登录弹窗需要implementation 'com.android.support:design:28.0.0'//1.0.4 自定义+分享弹窗+注册登录弹窗+更新弹窗implementation 'com.hl:poplibrary:1.0.4'

1. 自定义布局走起

1.1 比如我们之前用Spinner搞得下拉列表

其中布局为:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/deep_gray"tools:context=".MainActivity"><Spinnerandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="20dp"android:dropDownVerticalOffset="50dp"android:background="@drawable/spinner_bg_shape"android:entries="@array/spingarr"app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

spinner_bg_shape.xml为:(其他都是颜色值,随便设置就好)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="6dp" /><strokeandroid:width="2dp"android:color="@color/gray" /><solid android:color="#00ffffff" />
</shape>

1.2 现在替换为我们的定义的通用弹窗来搞试试

1.2.1 测试布局修改为activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/deep_gray"tools:context=".MainActivity"><TextViewandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="20dp"android:background="@drawable/spinner_bg_shape"android:onClick="popTest"android:text="假北京"app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

1.2.2 弹窗布局为 pop_address.xml

<?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:background="@color/white"android:orientation="vertical"><TextViewandroid:id="@+id/pa_haidianTv"android:layout_width="match_parent"android:layout_height="50dp"android:text="海淀" /><TextViewandroid:layout_width="match_parent"android:layout_height="50dp"android:text="昌平" /><TextViewandroid:layout_width="match_parent"android:layout_height="50dp"android:text="朝阳" />
</LinearLayout>

1.2.3 调用(内部做了说明,应该不是难理解)

     /*** 弹窗测试* @param view*/public void popTest(View view) {///< 动画BasePopView.ANIMATION _animation可以传null///< 可以选择调用无参数bOutsideTouchable、_backColor的方法(默认点击外部不消失)///< 点击事件回调_onClickListenner可以传nullBasePop.Builder builder = BasePopView.show(this,view, R.layout.pop_address,ScreenUtil.getScreenW(this), 0, ///< 0 - 表示高度内容包裹 -1 - 表示屏幕高度true, -1,BasePopView.ANIMATION.SCALE,                    ///< 方位显示方式只支持缩放动画->BasePopView.ANIMATION.SCALEnew OnEventListenner.OnBaseClickListenner() {@Overridepublic void onClick(View view) {///< 包含了跟布局下第一层子控件的点击事件(多层嵌套暂时未做处理,考虑的是作为一个弹窗没有那么复杂)switch (view.getId()) {case R.id.pa_haidianTv:Toast.makeText(MainActivity.this, "点击了海淀", Toast.LENGTH_SHORT).show();break;}}}, BasePopView.GRAVITY.LEFTTOP_TO_LEFTBOTTOM);}

1.2.4 显示效果如下 - - 其他显示效果,可以参考FanChael/CommonPopupWindow

2 分享弹窗(或许会被别人用到)FanChael/CommonPopupWindow

提供两种常用的分享弹窗样式(其中第二种仿tecent样式)

默认提供四种常规分享平台按钮+一个复制链接按钮(wx,circle,qq,sina,link)

提供了从上至下,从下至上两种出场方式

分享图标超过5个的情况下,可以选择采用水平滑动,或者网格方式进行展示;低于五个会做均分

2.1 默认常规分享调用

        ///< 点击事件回调OnEventListenner.OnShareClickListenner onShareClickListenner = new OnEventListenner.OnShareClickListenner() {@Overridepublic void onClick(View view, int pos) {Toast.makeText(MainActivity.this, "pos=" + pos, Toast.LENGTH_SHORT).show();}};///< 不提供分享资源的情况,默认提供了四种常规分享平台按钮+一个复制链接按钮/采用的是水平展示(条目过多的情况下,可以左右滑动)BasePop.Builder builder = SharePopView.showShare(this, view,null,  null,BasePopView.SIMPLE_GRAVITY.FROM_BOTTOM,SharePopView.SHOW_TYPE.HORIZON,onShareClickListenner);

2.2 提供分享资源(仿tecent的样式调用)

    List<String> _share2Name = new ArrayList<>();_share2Name.add("华为");_share2Name.add("阿里");_share2Name.add("小米");_share2Name.add("毛豆");_share2Name.add("无聊");_share2Name.add("华为");_share2Name.add("阿里");_share2Name.add("小米");_share2Name.add("毛豆");_share2Name.add("无聊");List<Integer> _share2Icon = new ArrayList<>();_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);_share2Icon.add(R.drawable.share_qq);///< 点击事件回调OnEventListenner.OnShareClickListenner onShareClickListenner = new OnEventListenner.OnShareClickListenner() {@Overridepublic void onClick(View view, int pos) {Toast.makeText(MainActivity.this, "pos=" + pos, Toast.LENGTH_SHORT).show();}};///< 不提供分享资源的情况,默认提供了四种常规分享平台按钮+一个复制链接按钮/采用的是水平展示(条目过多的情况下,可以左右滑动)BasePop.Builder builder = SharePopView.showShare(this, view,_share2Name,  _share2Icon,BasePopView.SIMPLE_GRAVITY.FROM_BOTTOM,SharePopView.SHOW_TYPE.HORIZON,onShareClickListenner);

别的像更新弹窗可以参考相关文档 FanChael/CommonPopupWindow

剩下的就参考教程来就好!小萌新的新项目用了。小白也算是兑现了之前的计划“通用弹窗计划”,当然无知的地方还在多,错的地方也还多,只有努力了....

其他学习相关

另外关于Dialog, DialogFragment, PopupWindow比较 Dialog, DialogFragment, PopupWindow比较 - 可以参考下,底部有很多相关解读

官方目前推荐采用DialogFragment创建对话框https://developer.android.google.cn/reference/android/app/DialogFragment - 其中比较重要的一点就是声明周期的管理(更方便的做适配) - 当然不一定都要用这个替代以前的。有些知名app也是某些情况下采用了alertDialog,都没做什么样式(感觉还是好看,更主题颜色很搭)

这样想的话,小白的整个通用弹窗貌似还有很多情况没做测试以及处理(比如横竖屏切换...后续还得更完善)

其他相关搜集...多看看也没啥坏处

android 自定义权限弹窗_Android-开源通用弹窗的封装CommonPopupWindow(总得向别人学点什么)...相关推荐

  1. Android自定义权限CVE漏洞分析 (IEEE论文)

    文章目录 前言 自定义权限早期漏洞 1.1 Android权限机制 1.2 自定义权限升级漏洞 1.3 confused deputy attack 自定义权限近期漏洞 2.1 黑盒Fuzz工具原理 ...

  2. Android -- 自定义权限

    在android系统的安全模型中,应用程序在默认的情况下不可以执行任何对其他应用程序,系统或者用户带来负面影响的操作.如果应用需要执行某些操作,就需要声明使用这个操作对应的权限. (在manifest ...

  3. Android自定义权限与使用

    本篇博客介绍下Android开发者如何自定义权限,进而如何将自己的部分组件暴露.并介绍客户端如何调用这些暴露的组件. 1. 如何自定义权限 Android允许我们使用permission标签,在Man ...

  4. android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码

    Android 自定义输入支付密码的软键盘 有项目需求需要做一个密码锁功能,还有自己的软键盘,类似与支付宝那种,这里是整理的资料,大家可以看下,如有错误,欢迎留言指正 需求:要实现类似支付宝的输入支付 ...

  5. android自定义进度条_Android中的自定义进度栏

    android自定义进度条 Custom progress bar in android application gives it a personal touch. In this tutorial ...

  6. Android usb 权限广播,android10.0 USB弹窗权限流程解析

    USB请求权限流程 1. 新建activity,获取UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE) ...

  7. android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码

    android通过toast实现悬浮通知效果,如图: 实现的功能: 自定义悬浮弹窗: 点击其他地方该布局不受影响: 可自定义显示时间: 可以设置点击事件: 代码如下: import android.c ...

  8. 自定义权限 android,android自定义权限

    今天在研究android自定权限的时候,发现一个错误: 11-25 16:16:24.819 1747-1747/com.example.android.renderscriptintrinsic E ...

  9. android webview权限申请_android - 在运行时向摄像机请求WebView权限 - 堆栈内存溢出...

    我想在Android WebView的PWA中使用QR码扫描仪. PWA在chrome浏览器上可以正常工作. 我确实有在"应用程序"->"应用程序名称"- ...

最新文章

  1. AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同
  2. Markdown 中画图
  3. linux truss strace ltrace 对比 诊断调试程序
  4. 计算机基础中怎么评价,浅谈职校计算机基础教学中的教学评价
  5. 人工智能、物联网和大数据如何拯救蜜蜂
  6. win7 easybcd 安装centos7.5 双系统
  7. 切面是异步还是同步操作‘_【 .NET Core 3.0 】框架之十 || AOP 切面思想
  8. AWS的Elastic IP和Private IP的区别
  9. C语言之去掉https链接的默认443端口
  10. RUNOOB python练习题 32 列表的中括号符号小tips
  11. 【VC编程技巧】窗口☞3.4利用bitmap改变对话框的背景。
  12. oracle group by sql,Oracle SQL GROUP BY“不是GROUP BY表达式”的帮助
  13. 算法踩坑4-冒泡排序
  14. java ceilingentry_java.util.TreeMap.ceilingKey()方法实例
  15. 大数据工程师微职位学习分享
  16. 人工智能为什么要从本科生抓起?
  17. python传递参数*与**
  18. 【优化求解】基于matalb改进的遗传算法求解IGA城市交通信号优化问题【含Matlab源码 215期】
  19. 中国地质大学网络计算机考试试题,中国地质大学《计算机》考试题答案
  20. Java SE 01 Java概述

热门文章

  1. 360搜索、UC浏览器等被3·15点名应用已下架;马斯克宣布通过NFT卖歌;美团App再发力社交,内测 “群聊”功能 |极客头条...
  2. 一边撸猫一边写代码,Linus Torvalds 谈在家办公
  3. 来自一位程序员女友的内心独白
  4. MySQL 面试,必须掌握的 8 个知识点
  5. 网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条
  6. CIO,马上就没有线下灾备了,不要做最后一个
  7. 44 岁的微软下一步是什么?
  8. 王思聪也救不了熊猫直播了?
  9. 如何使用 Java 调取 Python、R 的训练模型?
  10. World Leading!世界第二!百度云在吹牛?