位置: 编程技术 - 正文

Android 图片阴影处理分析!(android隐藏图片)

发布时间:2024-02-27

推荐整理分享Android 图片阴影处理分析!(android隐藏图片),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓手机图像有阴影怎么回事,android 阴影实现,android imageview设置阴影,android阴影边框,android阴影边框,android 阴影效果,android给图片加阴影,android imageview设置阴影,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在做一个Android位图阴影处理的效果,今天把思路总结一下:

分析如下:

Android sdk提供了BlurMaskFilter工具类可以给图片添加阴影效果,代码如下: —/** * This takes a mask, and blurs its edge by the specified radius. Whether or * or not to include the original mask, and whether the blur goes outside, * inside, or straddles, the original mask’s border, is controlled by the * Blur enum. */ `public class BlurMaskFilter extends MaskFilter {

} `——-

Note:

BlurMaskFilter 可以在指定的半径范围内对一张位图的边缘进行模糊处理。是否包括原始面具,是否对位图内、外或者跨越内外同时进行模糊处理可以通过给代码中的枚举Blur初始化不同参数来决定。 Blur 对应的个各个参数含义分别是:(翻译参考here) NORMAL(0), //!< 在目标内外显示面具,从边缘向目标内和目标外到离边缘radius宽的地方,向外显示面具时都会同时显示在目标边缘处获得的颜色。 SOLID(1), //!< 在目标外显示面具,从边缘向目标外到离边缘radius宽的地方,并且该部分会显示出从目标边缘获得的颜色,显示目标 OUTER(2), //!< 在目标外显示面具,从边缘向目标外到离边缘radius宽的地方,并且该部分会显示出从目标边缘获得的颜色,不显示目标 INNER(3); //!< 在目标内显示面具,从边缘向目标内到离边缘radius宽的地方显示,radius为初始化BlurMaskFilter的一个值 构造好一个BlurMaskFilter 对象后可以通过android.graphics.Paint类的setMaskFilter方法传给画笔对象,后面我们可以使用这个具有阴影效果的画笔来对位图的边缘进行处理。

现在我们有一个可以进行模糊处理的画笔,下面该怎么利用这个画笔对一个指定的位图的边缘进行处理呢?我们还需要看SDK提供的另外一个工具类,这个类是android.graphics.Bitmap的一个方法extractAlpha,代码如下:

Note:

这个方法的作用是,返回一个新的位图,这个位图只是获取了原始位图的透明值Alpha,但是没有RGB,所以我们看到的这个位图是一个黑色的位图。关于位图ARGB的相关知识,可以参考here。 在这个方法里面有两个参数,一个是画笔paint,一个是偏移量offsetXY。我们可以将上面得到的具有阴影效果的画笔传进来,这样得到的新的位图边缘就会有阴影的处理;偏移量offsetXY是用来指定画笔对位图边缘绘制阴影效果的半径范围,这个值是由上面构造BlurMaskFilter 的时候传进的radius参数是决定的。要提到的一点是,新得到的位图大小是可能比原始位图要大。假设BlurMaskFilter构造的时候传入的radius值是6,原始位图大小是x,那么新得到的位图大小就是(+6x2)x(+6x2)。偏移量offsetXY[ 0 ]=offsetXY[ 1 ]=-6。 Android 图片阴影处理分析!(android隐藏图片)

原始位图

获取原始位图透明通道后的新位图

现在我们已经得到了边缘具有阴影效果的位图,我们定义为shadowAlphaBitmap,但是这个位图还不是我们期望的最终效果,下面我们需要将这个位图和原始位图进行拼接。

具体思路是这样:

首先定义一个新的画布canvas 给这个画布canvas初始化一张rgba位图,位图的大小跟shadowAlphaBitmap一致。这里面多提一点细节知识,给canvas初始化的bitmap必须是isMutable的类型,意思就是这个bitmap的像素是允许被修改的,不然会报错。比如通过资源id加载的位图就不是可以被改变的,是不可以初始化给canvas使用的。Canvas源码如下: 将shadowAlphaBitmap绘制到画布上 将原始位图制到画布上。绘制原始位图的时候需要注意一下,由于原始位图是比shadowAlphaBitmap小,长宽各小-offsetXY[ 0 ],和-offsetXY[ 1 ],因此我们绘制原始位图的时候需要对原始位图做一下平移,这样才能使得原始位图在画布中居中。此时原始位图和画布之间就是我们期望看到的阴影了。

具体代码如下:

最后得到的边缘有阴影效果的位图

总结: 获取图片阴影效果,重点需要理解下面几个知识点: - BlurMaskFilter 的用法。 - Bitmap自带方法extractAlpha的含义和用法。 - 位图ARGB基础支持 - 使用画布Canvas修改位图的相关知识

代码github地址

安卓UI设计之圆角矩形的ImageView importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.Bitmap.Config;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.graphics.RectF;importandroid.g

Android 面试之横竖屏切换的Activity生命周期 publicclassEngineerJspActivityextendsActivity{privatestaticStringTag=EngineerJspActivity;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Log.d(Tag,onCreate(

RadioGroup+Fragment实现底部菜单栏 首先来张效果图1、MainActivity.javapublicclassMainActivityextendsActionBarActivity{privatestaticfinalintRB_NEW=0;privatestaticfinalintRB_UPLOAD=1;privatestaticfinalintRB_FRESH=2;privatestaticfi

标签: android隐藏图片

本文链接地址:https://www.jiuchutong.com/biancheng/385092.html 转载请保留说明!

上一篇:备忘笔记--->Android Activity(备忘录全部笔记)

下一篇:安卓UI设计之圆角矩形的ImageView(安卓开发界面ui设计器)

  • 进口关税怎么做分录
  • 提现的手续费怎么做账
  • 一年内到期的非流动负债是经营性负债吗
  • 丢失增值税发票已报税证明单怎么开
  • 商誉减值是在年报还是半年报
  • 股东分红需要开股东会决定吗?
  • 个税是每个月都扣吗
  • 法人存到公司账户的钱怎么记账
  • 房地产会计预收账款明细科目
  • 购买旧固定资产的增值税进项税
  • 公司车子的保养费怎么算
  • 有哪些发票可以开成餐饮服务
  • 单位结算卡在pos渠道可办理的功能
  • 分公司亏损总公司账务处理
  • 固定资产台账登记表明细科目写什么
  • 什么情况下是应收账款
  • 经营损失计入哪类费用
  • 评职称用的专利跟地标是一个东西吗?
  • 年终奖和当月工资合并申报税
  • 未交增值税借方表示什么
  • 注册资本使用后账务如何处理
  • 代缴水电费的差额是什么
  • 年终奖需要计入工资交社保吗
  • 库存成本与实际成本不符
  • 合同取得成本与销售费用
  • 个体工商户开9%的税需要什么
  • 华硕主板进入bios设置
  • 开红字发票后再开蓝字发票应如何入账?
  • macos catalina与macos big区别
  • 磁盘碎片指的是磁盘因为长期使用
  • 工厂返费能拿到吗
  • centos只有lo
  • PHP:ftp_ssl_connect()的用法_FTP函数
  • 查补以前年度收入
  • 损益类科目包括费用类科目吗
  • 查询数据库的7个标准步骤
  • 卷曲的蕨菜叶怎么吃
  • 拱门国家公园景点
  • 注销后怎么补缴社保
  • symfony2.4的twig中date用法分析
  • web数据可视化(Echars版)实训
  • PyTorch深度学习实战 | 基于ResNet的人脸关键点检测
  • php中文字符串截取
  • python里面的类
  • vue组件怎么使用
  • discuz论坛无法登录
  • 怎么连接php
  • 专项附加扣除中住房租金扣除所指的工作城市范围包括
  • 销项负数怎么报增值税
  • 计提折旧的固定资产平均总值怎么算
  • 开多少平方超市赚钱
  • 应纳税额和已缴税额一样
  • 医生规培补助
  • 工程施工合同如何核算收入成本?
  • 发票联遗失的证明怎么开
  • 探望公司员工现金费用报销怎么写
  • 房地产公司属于什么企业
  • 矿山运输设备的点检绩效考核
  • Windows server 2008下如何安装应用程序
  • win10预览版和正式版区别
  • xp系统经常未响应怎么办
  • u盘装系统win8
  • ubuntu系统中怎么安装mathematica13.1.0
  • linux如何使用
  • windows无法更改设置
  • Win7 64位摄像头驱动显示黄色感叹号无法使用的解决方法
  • jusched.exe是什么进程
  • win8双系统怎么切换
  • shader教程
  • cocos2d schedule
  • 粒子form
  • 15个常用的excel函数公式
  • angularjs2
  • javascript面向对象编程指南第三版
  • jquery里的each()是什么函数?你是如何使用他的?
  • 江苏省国家税务局总局官网
  • 亏损企业能否给补偿
  • 宁夏到新疆多少公里?
  • 餐饮专票可以抵扣吗
  • 地方税务局工作内容
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号