android使用 2D 方法实现倒影特效

QtC++实现控件倒影特效的两种方法(按钮为例) 本程勋通过两种方式实现了控件的倒影特效,不只是为图片添加倒影特效,还未按钮也添加了倒影特效,还可拓展至其他控件。两种方式,任您选择! 立即下载

每一个图像像素通过一个4字节整数来展现。最高位字节用作alpha通道;换言之用来实现透明/不透明控制。255代表完全不透明;0则代表完全透明。接下来一个字节是red红色通道;255代表完全是红色。依次类推接下来两个字节相应的实现绿色和蓝色通道。

现在你可以对单独的像素进行处理了。通过使用android.graphics.Bitmap API中的getPixels,可以加载像素到一个整数数组中。在本文例子中,你将按照一定规则对每一个像素实现着色。经过这个处理后,所有的像素将被转化为一个范围在0到255的字节码。android.graphics.Bitmap API中的setPixels则用来加载这个整数数组到一个图像中。最后一步是通过ImageView变量mIV来更新屏幕。以下是实现这个染色过程的代码片段。

private void TintThePicture(int deg) {

int[] pix = new int[picw * pich];

mBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);

int RY, GY, BY, RYY, GYY, BYY, R, G, B, Y;

double angle = (3.14159d * (double)deg) / 180.0d;

int S = (int)(256.0d * Math.sin(angle));

int C = (int)(256.0d * Math.cos(angle));

for (int y = 0; y < pich; y++)

for (int x = 0; x < picw; x++)

{

int index = y * picw + x;

int r = (pix[index] >> 16) & 0xff;

int g = (pix[index] >> 8) & 0xff;

int b = pix[index] & 0xff;

RY = ( 70 * r – 59 * g – 11 * b) / 100;

GY = (-30 * r + 41 * g – 11 * b) / 100;

BY = (-30 * r – 59 * g + 89 * b) / 100;

Y = ( 30 * r + 59 * g + 11 * b) / 100;

RYY = (S * BY + C * RY) / 256;

BYY = (C * BY – S * RY) / 256;

GYY = (-51 * RYY – 19 * BYY) / 100;

R = Y + RYY;

R = (R < 0) ? 0 : ((R > 255) ? 255 : R);

G = Y + GYY;

G = (G < 0) ? 0 : ((G > 255) ? 255 : G);

B = Y + BYY;

B = (B < 0) ? 0 : ((B > 255) ? 255 : B);

pix[index] = 0xff000000 | (R << 16) | (G << 8) | B;

}

Bitmap bm = Bitmap.createBitmap(picw, pich, false);

bm.setPixels(pix, 0, picw, 0, 0, picw, pich);

// Put the updated bitmap into the main view

mIV.setImageBitmap(bm);

mIV.invalidate();

mBitmap = bm;

pix = null;

}

 

 

使用 2D 方法实现倒影特效

倒影可以为 UI 界面带来立体感,是一个常用的 UI 特效。下图是一个图片浏览程序的 GridView,该 View 的倒影特效为 UI 界面增色不少。


实现原理

实现倒影可以使用 OpenGL 等 3D 接口方法,也可以用 2D 的方法模拟。

用 2D 方法实现倒影需要从两个方面考虑:

1.倒影是上、下翻转的图像;

2.从上到下透明度越来越大。


图像翻转的实现

原理上讲,图像的翻转实际就是将图像数据上下行互换。

Bitmap bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

 

for (int y = 0; y < h; y++)

{

      bm.setPixels(srcPix, y * w, w, 0, h - y - 1, w, 1);

}

 

 

透明度渐变

实现透明度渐变有两种方法,一是使用蒙板;二是直接修改像素数据,修改每个
像素的 alpha 值。

对于蒙板法,事先做好一张透明度渐变的图,这就是我们的蒙板,在绘制完图像之后把蒙板图片绘制上去,这样就产生了透明度渐变的效果。

对于第二种方法,我们需要首先读出图片的数据,然后修改每个像素的 alpha 值。下面的代码片段的功能是逐行增加 alpha 值,产生的效果是自上向下由暗
变亮。

int alpha = 0x00000000;

 

mBitmap.getPixels (pix, 0, w, 0, 0, w, h);

 

for (int y = 0; y<h; y++) {


for (int x=0; x<w; x++) {


int index = y * w + x;


int r = (pix[index] >> 16) & 0xff;


int g = (pix[index] >> 8) & 0xff;


int b = pix[index] & 0xff;

 


pix[index] = alpha | (r<<16) | (g<<8) | b;


}


alpha = alpha + 0x01000000;

 

}


5.png

android中进行图片的3D效果以及倒影效果 注意gallery不支持硬件加速,所以在Androidmanifest.xml文件中添加:android:hardwareAccelerated="false",不添加图片是斜的。 立即下载

相关推荐

ESP32蓝牙广播数据自定义指南:让你的设备更容易被手机发现

本文详细介绍了如何通过自定义ESP32蓝牙广播数据提升设备在手机端的可发现性。从广播数据结构、扫描响应优化到跨平台兼容性设置,提供了全面的技术指南和实战代码示例,帮助开发者解决智能硬件开发中的蓝牙连接难题。

weixin_29172201的博客 272

uniapp打包配置 (安卓+ios)

打开项目的manifest.json文件,在“App启动界面配置”中的“Android启动界面设置”项下勾选“自定义启动图”:提示:2020年6月30日起,苹果AppStore审核要求应用在启动时,不能使用启动图片,必须改为使用Storyboard来制作启动界面,如果需要提交AppStore请使用通用启动界面或自定义storyboard启动界面。

qzmlyshao的博客 2万+

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5634

android位图颜色模式的问题

【译】Android位图颜色模式的问题   原文http://android.nakatome.net/      最近开始了android上的编程之旅,在了解2D图形编程时,令人蛋疼的发觉android上仅支持ARGB8888、ARGB4444、RGB565以及Alpha 8这么几种颜色模式,而不支持RGB888这种格式。原本以为即使不支持RGB888我用ARGB88

挨踢大杂烩 2111

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

操作系统期末大题类型题解

额,OS主要这回考程序分析题,PV操作、生产者消费者啊,哲学家进餐问题,死锁问题啊,如何避免死锁,经典银行家算法,页面置换算法啥的,磁盘调度......总计还有很多,就不一一说了 PV操作 谈到PV操作,首先要了解什么是信号量,其实就是用来解决互斥与同步问题的,分为原语wait(S)和signal(S),也就是我们常说的PV操作,在这里给出王道上的概念 wait(S){ while(S>0) S=S-1; } signal(S){ S=S+1; } 记录型信号量

ZXxxiaoxuan的博客 795

android 特效相机实现,安卓特效相机(三) OpenGL ES 特效渲染

系列文章:特效的实现原理接下来这篇文章我们讲下特效的具体实现原理。由于预览画面的渲染是将Surface传给CameraDevice由它去绘制的,而且我没有找到什么可以接管或者添加渲染效果的接口,所以并不能直接去处理摄像头的画面。于是这里我们只能用一种游戏中常用的手段去处理,这种手段的名字叫做RTT(render to texture),中文名叫做渲染到纹理。玩法是先将我们想要处理的画面,不直接绘制...

weixin_35182280的博客 959

SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码)

合成孔径雷达(SAR)波数域(wK)成像算法也称为距离徙动(RM)算法,它不存在近似条件,可以对整个成像区域基于散射点模型进行精确聚焦。有的文章中称它为SAR成像的最佳实现。

zr2006_7的专栏 1万+

Android——界面特效 相关知识总结贴

帮助android UI实现动画特效 http://www.apkbus.com/android-79595-1-1.html 帮助android应用程序实现动画特效 http://www.apkbus.com/android-79775-1-1.html cocos2d-x初探学习笔记(8)--场景特效 http://www.apkbus.com/andro

浩宇碧海 1509

Qt基础之十九:进程与QProcess

进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。

草上爬的博客 1万+

【新版系统架构】系统架构设计师教程全篇知识点提炼

信息系统的5个基本功能:输入、存储、处理、输出和控制信息系统的发展:诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段信息系统的分类:传统的信息系统分为:业务(数据)处理系统、管理信息系统(MIS)、决策支持系统(DSS)、专家系统(ES)、办公自动化系统(OAS)等5类信息系统的生命周期:1、产生阶段2、开发阶段(总体规划、系统分析、系统设计、系统实施、系统验收阶段)3、运行阶段4、消亡阶段信息系统建设原则:1、高层管理人员介入原则。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1万+

Android 专栏整理

http://www.linuxgraphics.cn/android/index.htmlAndroid 专栏 作者: 刘鹏整理 日期: 2009-07-27 使用 2D 方法实现倒影特效倒影特效可以为 UI 带来绚丽的视觉效果,本文介绍了一种在 android 中以 2D 方法实现倒影特效的方法,给出了算法的代码片

小九的专栏 1118

在 SAP BTP Cloud Foundry 环境中开发 SAP HANA 的完整实战路线图

SAP HANA Cloud迁移路径解析:从本地到云原生的数据库现代化 本文梳理了SAP HANA在Cloud Foundry环境中的架构定位和实施路径,针对不同起点的项目提供迁移建议。核心内容包括: SAP HANA Cloud在Cloud Foundry中的双重角色:既作为平台服务提供数据库实例,又通过HDI容器管理MTA应用中的数据库工件。 针对四类典型项目起点的迁移策略: 绿地项目:直接采用CAP+SAP HANA Cloud组合 已有HANA service或XS advanced项目:需对照兼容

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 266

优快云上Android与IPhone开发博客精选

Android   [1] 张国威:Android从入门到提高系列 前面写了十四篇关于界面的入门文章,大家都看完和跟着练习之后,对于常用的Layout和View都会有一定的了解了,接下来的文章就不再强调介绍界面了,而是针对具体的常见功能而展开。 [2] 懒骨头:《Android Dev Guide》系列教程翻译文章1-18 本系列文章为Android SDK翻译文章,其实SD

kbest的专栏 5013

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android实现带纹理的运动轨迹,Android OpenGL ES 实现动态(水波纹)涟漪效果(保证惊艳到你)...

动态(水波纹)涟漪效果用几行代码实现惊艳的特效。水波纹效果原理最近一个做视频滤镜的朋友,让我给他做一个动态水波纹效果,具体就是:点击屏幕上的某一位置,然后波纹以该位置为中心向周围扩散。接到这个需求,一开始就尝试着在 3D 坐标系(x,y,z)中利用正弦或余弦函数去修改 z 分量的值,但是这样出来的效果太假了,压根就没有水波纹的真实感。然后,我就乖乖地去研究下物理世界中的水波纹是怎样形成的。你别说,...

weixin_29532173的博客 407

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

开发资料与实例教程

一、        开发资料与实例教程 android常用图片特效处理 http://www.eoeandroid.com/thread-170526-1-1.html Android 游戏场景特效(一) http://www.eoeandroid.com/thread-96925-1-1.html Android 游戏场景特效(二) http://www.eoeandroid.com

wenql209的博客 405

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: Android application context/activity context与内存泄露
下一篇: Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
ghd2000
博客等级 码龄18年 78粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值