终于也是自己封装一些东西了,不管烂不烂,还是自我鼓励了一把!(之前学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. MIT开发的一款最新Chrome插件,功能远超OCR软件,可快速识别和复制图中文字
  2. VTK:Points之SignedDistance
  3. python中的类属性和实例属性
  4. FCPX插件Day of the Dead Titles - 恐怖风格文本动画模板
  5. Bootstrap 3 : 图片上传预览 image upload preview
  6. 50个实用的JavaScript工具
  7. jstack会导致JVM停顿
  8. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践
  9. iOS开发NSDecimalNumber的基本使用,加、减、乘、除、指数、比较
  10. 写一个小程序实现win系统定时锁屏
  11. 计算机在剪辑方面的应用,多媒体技术对影视后期制作的应用
  12. Linksys e3200初试tomato系统
  13. C#实现简单气泡屏保(二)
  14. lambda的peek(流元素操作),filter(过滤),map(映射),limit(截断),skip(跳过),collect,distinct(去重)函数使用
  15. krpano1.20版本正式发布!
  16. 计算机局域网络具有哪些功能,局域网的功能有哪些
  17. 计算机视觉(相机标定)-1.1-针孔摄像机透镜
  18. 从一到无穷大:科学中的事实和臆测 (G. 伽莫夫 著)
  19. 使用联想计算节点的方法整理
  20. 2020 - 小米手机之取完整Root权限

热门文章

  1. 你怎么可以不了解 AST 呢?
  2. 淘宝特价版招聘:年薪50万,35岁以上优先;1900万:一线城市财富自由的入门级门槛;鸿蒙OS成武汉大学专业选修课 | 极客头条...
  3. Go语言中时间轮的实现
  4. 这道考 switch 控制语句的阿里基础面试题你能答对吗?
  5. SolarWinds 升级 APM Suite,简化应用程序和基础架构管理!
  6. 想招到优秀的程序员?这些坑一定不要踩
  7. DDoS 攻击爆发!医疗在线教育成重点,代理攻击成常态
  8. 为什么5G标准制定,非得“你死我活”?
  9. 阿里云河源数据中心正式开服 疫情期间曾2小时扩容1万台云服务器
  10. 超 60 万 GPS 定位服务被曝漏洞,用户信息或将暴露!