热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidcardview阴影颜色_Android通用PopupWindow,再也不用找UI小姐姐切.9图片了...

作者简介本文转载自bingoogolapple,分享了Android启动优化的常用方法,相信对大家有所帮助。bingoogolapple的博客地址htt

作者简介

本文转载自bingoogolapple,分享了 Android 启动优化的常用方法,相信对大家有所帮助。

bingoogolapple 的博客地址

https://juejin.im/post/5d709d8c5188252501778297

功能介绍

  • 支持配置浮窗展示在锚点控件的任意位置

  • 支持配置指示箭头(是否展示、展示在浮窗的任意位置、高度、圆角、颜色)

  • 支持配置浮窗背景色

  • 支持配置浮窗边框阴影(是否展示、宽度、颜色)

  • 支持配置浮窗以外的其他区域是否变暗

  • 浮窗超出屏幕区域后会自动移动浮窗到屏幕区域内

  • 对于只有文字的浮窗,直接使用 SimpleTextTip,不用写布局文件

效果图

59b1b3e861c35d3cbf9e7592d7f1ddeb.png
1
17f682205146282ff56158d87581d117.png
2
47ee054bd0363501170d505878b170ec.png
3
a4a5dc7a95ab4de61b1c95f84fc2b63d.png
4
4e9ba060d2e39da2e77ee7c12d8e8855.png
效果图

使用说明

添加 Gradle 依赖

ab762856fb0082adda0db4a7955b95d3.png
image.png

bga-transformerstip 后面的「latestVersion」指的是左边这个 Download 徽章后面的「数字」,请自行替换。

1dependencies {
2    implementation 'cn.bingoogolapple:bga-transformerstip:latestVersion@aar'
3}
4

方式一:在 Java 代码中设置浮窗位置,在布局文件中设置浮窗背景、箭头位置

  • 这种方式的优点是可以提前查看预览效果,提升开发效率

1698ab8d642fc24c21c5294f3b5db00a.png
preview
  • 添加浮窗布局文件,在布局文件中设置浮窗背景、箭头位置

    1 bingo\nG googol\nA -> apple\nBGA -> bingoogolapple" 7    android:textColor="@android:color/white" />
    8
    9


  • 在 Java 代码中设置浮窗位置

1    new TransformersTip(anchorView, R.layout.layout_demo1_tip) {
2        @Override
3        protected void initView(View contentView) {
4            // 点击浮窗中自定按钮关闭浮窗
5            contentView.findViewById(R.id.tv_tip_close).setOnClickListener(new View.OnClickListener() {
6                @Override
7                public void onClick(View v) {
8                    dismissTip();
9                }
10            });
11        }
12    }
13            .setTipGravity(TipGravity.TO_BOTTOM_CENTER) // 设置浮窗相对于锚点控件展示的位置
14            .setTipOffsetXDp(0) // 设置浮窗在 x 轴的偏移量
15            .setTipOffsetYDp(-6) // 设置浮窗在 y 轴的偏移量
16
17            .setBackgroundDimEnabled(true) // 设置是否允许浮窗的背景变暗
18            .setDismissOnTouchOutside(false) // 设置点击浮窗外部时是否自动关闭浮窗
19
20            .show(); // 显示浮窗

方式二:在 Java 代码中设置浮窗位置、浮窗背景、箭头位置

  • 添加浮窗布局文件

    1 bingo\nG googol\nA -> apple\nBGA -> bingoogolapple" 7    android:textColor="@android:color/black" />
    8
    9

  • 在 Java 代码中设置浮窗位置、浮窗背景、箭头位置

1    new TransformersTip(anchorView, R.layout.layout_demo2_tip) {
2        @Override
3        protected void initView(View contentView) {
4            // 点击浮窗中自定按钮关闭浮窗
5            contentView.findViewById(R.id.tv_tip_close).setOnClickListener(new View.OnClickListener() {
6                @Override
7                public void onClick(View v) {
8                    dismissTip();
9                }
10            });
11        }
12    }
13            .setArrowGravity(ArrowGravity.TO_BOTTOM_CENTER) // 设置箭头相对于浮窗的位置
14            .setBgColor(Color.WHITE) // 设置背景色
15            .setShadowColor(Color.parseColor("#33000000")) // 设置阴影色
16            .setArrowHeightDp(6) // 设置箭头高度
17            .setRadiusDp(4) // 设置浮窗圆角半径
18            .setArrowOffsetXDp(0) // 设置箭头在 x 轴的偏移量
19            .setArrowOffsetYDp(0) // 设置箭头在 y 轴的偏移量
20            .setShadowSizeDp(6) // 设置阴影宽度
21
22            .setTipGravity(TipGravity.TO_TOP_CENTER) // 设置浮窗相对于锚点控件展示的位置
23            .setTipOffsetXDp(0) // 设置浮窗在 x 轴的偏移量
24            .setTipOffsetYDp(6) // 设置浮窗在 y 轴的偏移量
25
26            .setBackgroundDimEnabled(false) // 设置是否允许浮窗的背景变暗
27            .setDismissOnTouchOutside(false) // 设置点击浮窗外部时是否自动关闭浮窗
28
29            .show(); // 显示浮窗

方式三:对于仅有文字的浮窗,可以直接使用 SimpleTextTip,不用再写布局文件了

1new SimpleTextTip(anchorView)
2        .setTextContent("适用于只有文字的浮窗\n不写布局文件\n在 Java 代码中设置文本内容属性") // 设置浮窗文本内容
3        .setTextPaddingDp(12) // 设置文字与浮窗边框的间距
4        .setTextColor(Color.BLACK) // 设置文字颜色
5        .setTextSizeSp(14) // 设置文字大小
6        .setTextGravity(Gravity.CENTER) // 设置文字对其方式
7        .setLineSpacingExtraDp(4) // 设置文字行间距
8
9        .setArrowGravity(ArrowGravity.TO_BOTTOM_ALIGN_START) // 设置箭头相对于浮窗的位置
10        .setBgColor(Color.WHITE) // 设置背景色
11        .setShadowColor(Color.parseColor("#33000000")) // 设置阴影色
12        .setArrowHeightDp(6) // 设置箭头高度
13        .setRadiusDp(4) // 设置浮窗圆角半径
14        .setArrowOffsetXDp(0) // 设置箭头在 x 轴的偏移量
15        .setArrowOffsetYDp(0) // 设置箭头在 y 轴的偏移量
16        .setShadowSizeDp(6) // 设置阴影宽度
17
18        .setTipGravity(TipGravity.TO_TOP_ALIGN_START) // 设置浮窗相对于锚点控件展示的位置
19        .setTipOffsetXDp(0) // 设置浮窗在 x 轴的偏移量
20        .setTipOffsetYDp(6) // 设置浮窗在 y 轴的偏移量
21
22        .setBackgroundDimEnabled(false) // 设置是否允许浮窗的背景变暗
23        .setDismissOnTouchOutside(true) // 设置点击浮窗外部时是否自动关闭浮窗
24
25        .show(); // 显示浮窗
26

TipGravity 说明

  • 通过 TipGravity.xxxx 来设置浮窗相对于锚点控件展示的位置

    3569709066ff0fc9d557c5bb6d817eb2.png
    TipGravity说明

ArrowGravity 说明

  • 通过 ArrowGravity.xxxx 来设置箭头相对于浮窗的位置

1c2649aa37263a4ff20aa06ef18da7fb.png
ArrowGravity说明

TransformersTipLinearLayout 和 TransformersTipRelativeLayout 自定义属性说明

1
2    
3    
4    
5    
6    
7    
8    
9    
10    
11    
12    
13    
14    
15    
16    
17    
18        
19        
20        
21
22        
23        
24
25        
26        
27
28        
29        
30
31        
32        
33        
34    attr>
35declare-styleable>
36

 GitHub 项目源码

https://github.com/bingoogolapple/BGATransformersTip-Android

题外话

Android 面试必备 - 知识图谱自定义 Behavior - 仿新浪微博发现页的实现自定义 behavior - 完美仿 QQ 浏览器首页,美团商家详情页Fragment全解析系列(一):那些年踩过的坑Fragment全解析系列(二):正确的使用姿势带你全面了解 Android 内存优化Android自定义控件进阶篇,自定义LayoutManager策略模式 — 孔明排兵布阵探索 Android 启动优化方法

扫一扫,欢迎关注我的微信公众号 stormjun94(徐公码字), 目前是一名程序员,不仅分享 Android开发相关知识,同时还分享技术人成长历程,包括个人总结,职场经验,面试经验等,希望能让你少走一点弯路。

65af81741b3805188b63e2b089d2845b.png



推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
author-avatar
男人好好疼h爱你的女人吧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有