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",不添加图片是斜的。 立即下载

相关推荐

AD24层次原理图设计避坑指南:如何解决端口连接与自动交叉引用问题

本文深入解析AD24层次原理图设计的核心机制,聚焦端口连接错误、自动交叉引用干扰等常见问题。通过对比自上而下与自下而上设计流程,提供端口类型匹配、命名规范等实用解决方案,并指导如何关闭烦人的红色框线视觉干扰,帮助工程师高效避坑,实现复杂系统的模块化设计。

wdx01234567的博客 620

uniapp打包配置 (安卓+ios)

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

qzmlyshao的博客 2万+

VSCode + Clangd 配置避坑实录:从‘红波浪线’到完美代码提示的完整心路

本文详细记录了VSCode与Clangd配置过程中的常见问题及解决方案,从编译数据库生成到参数调优,帮助C++开发者快速解决代码提示失效、头文件找不到等问题,实现完美代码补全体验。重点介绍了Clangd与LLDB的集成配置及性能优化技巧,适用于Linux和跨平台开发环境。

weixin_28829479的博客 492

android位图颜色模式的问题

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

挨踢大杂烩 2111

FlexibleButton嵌入式按键处理方案设计与实现

嵌入式系统中的按键处理是基础且关键的人机交互技术,其核心原理是通过GPIO电平检测结合状态机实现事件识别。FlexibleButton作为轻量级C语言按键处理库,采用硬件抽象层设计实现驱动解耦,支持单击、双击、长按等丰富事件类型。该方案通过集中式扫描策略和内置消抖算法,在RT-Thread和裸机环境中均能稳定运行,特别适合需要组合按键检测和低功耗优化的物联网设备。典型应用场景包括智能家居控制面板和工业HMI界面开发,其中硬件解耦架构和事件驱动模型显著提升代码复用率。

weixin_35757191的博客 402

Agilent N5230A矢量网络分析仪在射频器件S参数测试中的关键操作指南

本文详细介绍了Agilent N5230A矢量网络分析仪在射频器件S参数测试中的关键操作流程与技巧。内容涵盖从开机预热、校准(SOLT/ECal)、参数设置(频率、点数、功率、IFBW)到连接测量、数据保存分析的全过程,并分享了夹具去嵌入、时域分析等进阶功能与常见问题避坑指南,旨在帮助工程师获得精准可靠的散射参数测试结果。

kotlin6android的博客 402

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

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

weixin_35182280的博客 959

泰克示波器TDS210改装便携示波器

泰克示波器TDS210改装编写示波器

超级网吧的博客 3080

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

OpenEvidence DeepConsult深度分析:技术架构、临床应用与行业影响

摘要:医疗AI平台OpenEvidence通过多智能体协作系统重构临床决策流程,解决了医学信息过载难题。其DeepConsult系统严格基于同行评审文献,5-10秒内提供循证决策支持,已覆盖40%美国医生,月咨询量达850万次。该平台采用"免费工具+广告变现"模式,通过调度、检索、摘要等模块化智能体分工,实现从文献分析到临床建议的闭环处理,在USMLE测试中准确率达90%。2025年获7500万美元融资后估值突破10亿美元,成为医疗AI领域的新范式。

AllenLV的博客 2556

深入RKNN Toolkit2:自定义算子与内存优化秘籍

本文系统探讨了RKNNToolkit2在模型转换中的关键技术与优化策略。首先介绍了该工具包的基础功能及模型转换流程,重点阐述了自定义算子的实现方法,包括算子分析、代码编写和注册集成等步骤,并以ReduceLogSumExp算子为例进行案例分析。在内存优化方面,详细论述了模型量化、内存复用和参数配置等策略,通过具体案例展示优化效果。最后结合智能安防项目实践,分享了YOLOv5模型部署经验及问题解决方案。文章指出,随着AI技术发展,RKNNToolkit2将在算子支持、量化技术和硬件适配等方面持续优化,为边缘计

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1389

Android 专栏整理

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

小九的专栏 1118

如何给数据添加高斯白噪声?

首先测试集应该是加噪声的,至于训练集需不需要加噪声就见仁见智了。我个人测试的结果是,训练集如果不加噪声的话效果特别差,如果加噪声的话效果就比较好接受,大家可以自己试试看。在轴承故障研究中免不了要涉及到给数据主动加入噪声的情况,一般我们加的是高斯白噪声。由于热噪声是由大量自由电子的运动产生的,其统计特性服从高斯分布,故常将热噪声称为高斯白噪声。的频谱是均匀分布的,好像白光的频谱在可见光的频谱范围内均匀分布那样,所以热噪声又常称为。定义一:如果一个噪声,它的瞬时值服从。又是均匀分布的,则称它为高斯白噪声。

weixin_50642818的博客 5220

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

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

kbest的专栏 5013

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

weixin_29532173的博客 407

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

开发资料与实例教程

一、        开发资料与实例教程 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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 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、付费专栏及课程。

余额充值