在android上模拟ios阴影效果

article/2025/1/11 9:59:38

update一下,下面方法现在来看很low,其实最简单的是直接自定义一个drawable

=============================================================

android上大部分时候阴影是不符合产品需求的,就比如我们就要求实现一个类似ios的圆形图片的阴影???

cardview阴影就挺好,可是他喵了个咪的,不符合需求啊

那么该怎么实现类似cardview或者类似ios上面的阴影效果呢?

暂时只跟踪了cardview和floatingActionButton的实现

1、cardview是通过setCardElevation来设置阴影的,通过跟踪代码可以发现cardview最终会调用RenderNode进行底层实现,要跟底层实现可以去找android framework层的代码,当然我们只是为了简单的实现一个阴影效果,所以暂不讨论其底层具体实现

2、FloatingActionButton,通过跟踪代码可以发现它是通过drawable来实现的,很明显,对我们来说通过drawable来实现更简单一些

实现的过程中还遇到一个问题,就是在4.4之前以及5.0之后drawable中的gradient显示差距巨大,这是android的一个bug,具体参考 https://issuetracker.google.com/issues/37007621

不过在将drawable改为代码实现后会稍微好一些,所以也算一个解决方案吧

具体实现思路:

通过构建gradientdrawable实现阴影渐变,然后将drawable转为bitmap(由于后面要做高斯模糊,所以尽量构建一个小一点的bitmap),再将bitmap进行高斯模糊,之后将bitmap作为背景设置到一个imageview上,当然这样实现的一个弊端就是我们需要在要展示的图片后面再放一张图片-。-,没什么好思路,感觉这样子实现最好的方式就是自定义一个viewgroup,预留空间然后构建阴影,再或者设置一个backgournd一个foreground,然后将foreground进行一定比例的缩放?或许可以,之后再研究吧,也不是什么主要功能

不过有一个好处,只要是gradient可以画出来的渐变,我们都可以做成阴影,可以自定义颜色自定义形状

附4.4以及5.0以上效果图

4.4


 5.0+




http://chatgpt.dhexx.cn/article/WWbTsGID.shtml

相关文章

猫猫学IOS(六)UI之iOS热门游戏_超级猜图

猫猫分享,必须精品 素材地址:http://blog.csdn.net/u013357243/article/details/44539069 原创文章,欢迎转载。转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmodecontents 先看效果图 思路 需求分析…

iOS汇编基础(二)寄存器

以arm64为例 xcode调试汇编1. xcode 查看运行时的汇编代码 debug -> debug workflow -> always show disassembly 2. Xcode改变pc值 register write pc 0x1005d6928 3. 单步运行一步汇编代码:ni 4. 读取某个寄存器 (lldb) register read x0x0 = 0x0000000000000000…

Unity简单操作: DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案,与iOS平台为什么需要勾选安全模式

目录 DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案 当然 在iOS平台 测试好了的话 需要勾选它,不然iOS机制原因 会导致onComxx回调 没有执行! DoTween的onCom..回调函数里面执行错误 不返回哪条函数出错的解决方案 如下图&…

iOS汇编基础(一)

一 高级语言运行过程 二 汇编语言的特点 可以直接访问、控制各种硬件设备,比如存储器、CPU等,能最大限度地发挥硬件的功能能够不受编译器的限制,对生成的二进制代码进行完全的控制目标代码简短,占用内存少,执行速度快汇编指令是机器指令的助记符,同机器指令一一对应。每一…

STM32cubIDE 黑色主题_主题 | 喵咪旅行日志 VX可爱系列主题 BySasa

今天带来一款Sasa小宝贝儿投稿的可爱系列VX主题,应该也算是可爱系列里偏向简单的了。 鉴于前几次留言总是碰到隔着网线就不需要情商的DS。在前边先申明清楚吧,审美各有差异,不喜欢不用就好了。如果没有素质去diss投稿者作品,那就别…

tp框架怎么连接mysql_tp框架知识 之(链接数据库和操作数据)

框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。 一、链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文…

thinkphp6开发cms项目之安装tp框架

1.安装thinkphp6框架: composer create-project topthink/think tp需要安装的扩展: composer require topthink/think-multi-app //多应用 composer require topthink/think-view //视图 composer require topthink/think-captcha //验证码2.如果运行ph…

我的服务器开发之路-安装thinkphp

http://www.thinkphp.cn/down/framework.html 下载thinkphp 我这边下载的是thinkphp5.0.3核心版 然后,打开xftp 4,将下载的thinkphp5.0.3的压缩包解压到tp503目录,并上传到/data/www/web目录 然后,打开浏览器,输入 域…

tp框架与mysql_TP框架对数据库的基本操作

数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一、链接数据库 (1)找到…

php tp框架,TP框架

tp:thinkphp框架,它也是一个轻量级的框架,它有中文社区,中文的帮助文档。它是国人开发的框架。 Thinkphp框架最初是由于企业级网站的开发和web网站的开发诞生的,最初诞生在2006年,它叫fsc,2007年正式更名为thinkphp,它…

TP5框架

第一次写博客 因为自己的技术是在有点差,所以想提升一下自己的技术,所有尝试写下博客,这次是关于TP5框架的, 开发PHP肯定要环境,手搭PHP不是不行,只是切换版本的时候特别麻烦,所以我下载了一个集成环境,用的是PHPstudy,小伙伴们可以自行去下载 ###我下载的是TP5.0完整版本,压…

Oracle轻量级客户端下载,Oracle轻量级客户端使用,Oracle轻量级客户端配置,本地同时安装服务器端和客户端,并实现plsql developer连接

Oracle轻量级客户端,不需要安装,绿色版,可以用于本地或者远程数据库连接,包含了基本的sqlplus,数据泵等功能。 官方解释如下:https://www.oracle.com/technetwork/database/database-technologies/instant…

使用ThinkPhp6框架搭建的管理系统

项目介绍 一款 PHP 语言基于 ThinkPhp6.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件&am…

php 命令安装tp5,tp5.1框架的下载与安装方法步骤(图文)

大家可以都知道啊,tp框架5.1之前的版本都是可以在thinkphp的官网进行下载压缩包来安装框架的,那么在从tp5.1开始啊,就取消了下载压缩包安装的方法,那么我们如何进行下载呢? tp5.1的手册中开始就有提到tp5.1框架有两种安…

TP5.0框架上手准备

活到老学到老,祝上手顺利 1:首先需要安装并调试 方法一:在官网:[地址](http://www.thinkphp.cn),下载完整版的TP框架放在对应的www目录下; 方法二:利用composer进行安装,下载安装composer后,在DOS窗口切换到对应目录下输入&#x…

tp6企业级开发框架

项目介绍 一款 PHP 语言基于 ThinkPhp6.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的组件&am…

K8S云原生环境渗透学习

转载至​​​​​​K8S云原生环境渗透学习 - 先知社区 K8S云原生环境渗透学习 前言 ​ Kubernetes,简称k8s,是当前主流的容器调度平台,被称为云原生时代的操作系统。在实际项目也经常发现厂商部署了使用k8s进行管理的云原生架构环境&#x…

day3----部署duboo微服务值部署zk和Jenkins(3)

部署zk集群 Zookeeper是Dubbo微服务集群的注册中心 它的高可用机制和k8s的etcd集群一致 由java编写,所以需要jdk环境主机名角色iphdss7-11.host.comk8s代理节点1,zk110.4.7.11hdss7-12.host.comk8s代理节点2,zk210.4.7.12hdss7-21.host.comk…

项目系统配置软件

(一)配置阿里镜像源################################################################################### 打开虚拟机跟随下面的连接操作即可将linux部署到阿里https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11h7vSuM (二)为linux安装jdk(windo…

一份Git的全总结

文章目录 励志一、Git学习路线二、Git安装三、理论基础(1)Git的发展(2)Git 是什么?(3)三种状态(4)Git 保证完整性(5)Git工作流程图(6&…