电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android仿微信通話背景的高斯模糊效果

瀏覽:172日期:2022-06-03 16:45:15

先看下效果圖:

Android仿微信通話背景的高斯模糊效果

仔細(xì)觀察上圖,我們可以發(fā)現(xiàn),背景圖以用戶頭像為模板,對(duì)其進(jìn)行了高斯模糊,并把它作為整個(gè)頁(yè)面的背景色。

關(guān)于Android如何快速實(shí)現(xiàn)高斯模糊(毛玻璃效果),網(wǎng)上一堆相關(guān)介紹, 下面直接給出網(wǎng)上模糊化工具類(已驗(yàn)證可行):

import android.graphics.Bitmap;/** * 快速模糊化工具 */public class FastBlur { public static Bitmap doBlur(Bitmap sentBitmap, int radius, boolean canReuseInBitmap) {Bitmap bitmap;if (canReuseInBitmap) { bitmap = sentBitmap;} else { bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);}if (radius < 1) { return (null);}int w = bitmap.getWidth();int h = bitmap.getHeight();int[] pix = new int[w * h];bitmap.getPixels(pix, 0, w, 0, 0, w, h);int wm = w - 1;int hm = h - 1;int wh = w * h;int div = radius + radius + 1;int r[] = new int[wh];int g[] = new int[wh];int b[] = new int[wh];int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;int vmin[] = new int[Math.max(w, h)];int divsum = (div + 1) >> 1;divsum *= divsum;int dv[] = new int[256 * divsum];for (i = 0; i < 256 * divsum; i++) { dv[i] = (i / divsum);}yw = yi = 0;int[][] stack = new int[div][3];int stackpointer;int stackstart;int[] sir;int rbs;int r1 = radius + 1;int routsum, goutsum, boutsum;int rinsum, ginsum, binsum;for (y = 0; y < h; y++) { rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; for (i = -radius; i <= radius; i++) {p = pix[yi + Math.min(wm, Math.max(i, 0))];sir = stack[i + radius];sir[0] = (p & 0xff0000) >> 16;sir[1] = (p & 0x00ff00) >> 8;sir[2] = (p & 0x0000ff);rbs = r1 - Math.abs(i);rsum += sir[0] * rbs;gsum += sir[1] * rbs;bsum += sir[2] * rbs;if (i > 0) { rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2];} else { routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2];} } stackpointer = radius; for (x = 0; x < w; x++) {r[yi] = dv[rsum];g[yi] = dv[gsum];b[yi] = dv[bsum];rsum -= routsum;gsum -= goutsum;bsum -= boutsum;stackstart = stackpointer - radius + div;sir = stack[stackstart % div];routsum -= sir[0];goutsum -= sir[1];boutsum -= sir[2];if (y == 0) { vmin[x] = Math.min(x + radius + 1, wm);}p = pix[yw + vmin[x]];sir[0] = (p & 0xff0000) >> 16;sir[1] = (p & 0x00ff00) >> 8;sir[2] = (p & 0x0000ff);rinsum += sir[0];ginsum += sir[1];binsum += sir[2];rsum += rinsum;gsum += ginsum;bsum += binsum;stackpointer = (stackpointer + 1) % div;sir = stack[(stackpointer) % div];routsum += sir[0];goutsum += sir[1];boutsum += sir[2];rinsum -= sir[0];ginsum -= sir[1];binsum -= sir[2];yi++; } yw += w;}for (x = 0; x < w; x++) { rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0; yp = -radius * w; for (i = -radius; i <= radius; i++) {yi = Math.max(0, yp) + x;sir = stack[i + radius];sir[0] = r[yi];sir[1] = g[yi];sir[2] = b[yi];rbs = r1 - Math.abs(i);rsum += r[yi] * rbs;gsum += g[yi] * rbs;bsum += b[yi] * rbs;if (i > 0) { rinsum += sir[0]; ginsum += sir[1]; binsum += sir[2];} else { routsum += sir[0]; goutsum += sir[1]; boutsum += sir[2];}if (i < hm) { yp += w;} } yi = x; stackpointer = radius; for (y = 0; y < h; y++) {// Preserve alpha channel: ( 0xff000000 & pix[yi] )pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];rsum -= routsum;gsum -= goutsum;bsum -= boutsum;stackstart = stackpointer - radius + div;sir = stack[stackstart % div];routsum -= sir[0];goutsum -= sir[1];boutsum -= sir[2];if (x == 0) { vmin[y] = Math.min(y + r1, hm) * w;}p = x + vmin[y];sir[0] = r[p];sir[1] = g[p];sir[2] = b[p];rinsum += sir[0];ginsum += sir[1];binsum += sir[2];rsum += rinsum;gsum += ginsum;bsum += binsum;stackpointer = (stackpointer + 1) % div;sir = stack[stackpointer];routsum += sir[0];goutsum += sir[1];boutsum += sir[2];rinsum -= sir[0];ginsum -= sir[1];binsum -= sir[2];yi += w; }}bitmap.setPixels(pix, 0, w, 0, 0, w, h);return (bitmap); }}

那么,我們使用這個(gè)工具類,就可以高仿微信聊天頁(yè)面了么?答案是NO。

我們先看下直接使用該工具類能實(shí)現(xiàn)的效果:

Android仿微信通話背景的高斯模糊效果

我們可以看出來(lái),通過(guò)該工具類,能實(shí)現(xiàn)圖片的毛玻璃效果,可是并不理想,因?yàn)槲⑿诺谋尘邦伾担覀兡:玫降膱D片顏色偏淡。效果有些不盡如人意。了解ios的人,或許知道,ios實(shí)現(xiàn)高斯模糊有直接的api:UIBlurEffectStyleExtraLight、UIBlurEffectStyleLight 、UIBlurEffectStyleDark,而UIBlurEffectStyleDark就可以直接實(shí)現(xiàn)比較暗的毛玻璃效果。那放在android這邊,該如何辦呢?

我這里采用的是“曲線求國(guó)”的策略,要想背景色偏暗,我們使用FrameLayout布局,在其中添加一個(gè)比較暗的一層View,就可以實(shí)現(xiàn)啦。

<?xml version='1.0' encoding='utf-8'?><FrameLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent' android:fitsSystemWindows='true' android:orientation='vertical'> <ImageViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:adjustViewBounds='true'android:maxHeight='1500dp'android:maxWidth='1000dp'android:scaleType='centerCrop' /> <ImageViewandroid:layout_width='match_parent'android:layout_height='match_parent'android:background='#90000000' /> <RelativeLayoutandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:fitsSystemWindows='true'android:orientation='vertical'><ImageView android: android:layout_width='100dp' android:layout_height='100dp' android:layout_centerHorizontal='true' android:layout_marginTop='80dp' android:scaleType='fitXY' android:src='http://www.hdgsjgj.cn/bcjs/@mipmap/ic_launcher' /><TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_below='@id/imgUserHead' android:layout_centerHorizontal='true' android:layout_marginTop='30dp' android:gravity='center_horizontal' android:text='靜音' android:textColor='#ffffff' android:textSize='24dp' /></RelativeLayout></FrameLayout>

上面代碼中,可以看到,我們添加了這么一個(gè)ImageView:

<ImageViewandroid:layout_width='match_parent'android:layout_height='match_parent'android:background='#90000000' />

如此這般,便是可以實(shí)現(xiàn)真正的高仿啦。

最重實(shí)現(xiàn)的效果圖如下:

Android仿微信通話背景的高斯模糊效果

源碼地址:

https://github.com/zuiwuyuan/FastBlur_VoiceChat

到這里就結(jié)束啦。

以上就是Android仿微信通話背景的高斯模糊效果的詳細(xì)內(nèi)容,更多關(guān)于Android 高斯模糊效果的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: 微信
相關(guān)文章:
主站蜘蛛池模板: 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 郑州墨香品牌设计公司|品牌全案VI设计公司| 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 北京燃气公司 用户服务中心| 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 数控走心机-双主轴走心机厂家-南京建克 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 自动配料系统_称重配料控制系统厂家 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 |