1. 程式人生 > >Android UI效果實現 滑動模糊漸變效果實現

Android UI效果實現 滑動模糊漸變效果實現

大家應該都看到過iOS7解鎖螢幕的滑動模糊漸變效果,好了,現在可以把手紙收起來了,今天黃老師就給大家講一下如何在Android平臺上

實現類似的滑動模糊漸變效果,其實方式遠比你想像的簡單。

目標效果展示:

\\\

第一部分:幾個前提

說到模糊效果,我們先要了解幾個前提

1、原圖,指需要被模糊的一張點陣圖

2、模糊,通常是採用指將一個位圖的每個畫素RGB值都取周圍畫素的RGB值的平均值,這樣就可以產生模糊效果,一般通過高斯函式來實現,

至於Java中的實現方式黃老師就不給大家細講了,我也不是搞圖形演算法的,在這方面瞭解的不比大家多,百度一下能找到一堆高斯模糊轉換的實現。

3、模糊半徑,指每個畫素點周圍模糊的半徑,半徑越大,模糊程度約高,模糊效果越明顯,同時,模糊計算耗費時間越長。

4、模糊處理非常費時,一半在100ms~5000ms內,就黃老師我本人找的網上的演算法實測,一般android通過java實現的高斯模糊演算法轉換一張手機

螢幕解析度為480x800的點陣圖需要2s左右,所以如果要在滑動的過程中實時不斷重新計算模糊效果會非常差,所以如果要實現iOS7那樣的滑動動態模糊

漸變效果,用這樣的方式是不可行的,實際上iOS也不是這麼做的,因為iOS的硬體也沒達到能實時計算的程度。

那麼究竟應該如何去實現模糊漸變呢,其實非常簡單,我們接著講。

第二部分:動態模糊漸變的合理實現方式

其實,我的方式非常簡單,首先你需要明確一個最大的模糊效果的模糊半徑值,我們給它取個名字叫maxRadius,然後使用maxRadius和原圖傳入高斯模糊演算法

中計算出最大模糊效果的點陣圖maxBlurBitmap。

然後,在ui元件中,假設我的原圖是用一個ImageView顯示在介面上的,然後你所需要做的是,再建立一個ImageView置於原圖ImageView之上,然後將圖片源

設定為maxBlurBitmap,如下圖:

\

接著,我們只需要簡單的調整maxBlurBitmap的透明度,即可實現模糊漸變效果了,是否很簡單呢?

第三部分,提供一個最簡單的Java高斯模糊實現,我網上找來的,方便偷懶不願自己找的同學

001.1 /** 002.2  * 點陣圖處理類 003.3  * @author HalfmanG2 004.4  */ 005.5 public class BitmapUtil { 006.6 007.7     /** 008.8      * 建立一個虛化的點陣圖 009.9      * @param sentBitmap 原點陣圖 010.10      * @param radius 虛化半徑 011.11      * @return 虛化後的點陣圖 012.12      */ 013.13     public static Bitmap createBlurBitmap(Bitmap sentBitmap, int radius) { 014.14         Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); 015.15         if (radius < 1) { 016.16             return (null); 017.17         } 018.18         int w = bitmap.getWidth(); 019.19         int h = bitmap.getHeight(); 020.20         int[] pix = new int[w * h]; 021.21         bitmap.getPixels(pix, 0, w, 00, w, h); 022.22         int wm = w - 1; 023.23         int hm = h - 1; 024.24         int wh = w * h; 025.25         int div = radius + radius + 1; 026.26         int r[] = new int[wh]; 027.27         int g[] = new int[wh]; 028.28         int b[] = 

相關推薦

Android UI效果實現 滑動模糊漸變效果實現

大家應該都看到過iOS7解鎖螢幕的滑動模糊漸變效果,好了,現在可以把手紙收起來了,今天黃老師就給大家講一下如何在Android平臺上 實現類似的滑動模糊漸變效果,其實方式遠比你想像的簡單。 目標效果展示: 第一部分:幾個前提 說到模糊效

iOS簡單實現圖片模糊漸變效果

文章說明:本文可以其實只是個人對知識的記錄,為了自己以後找起來方便 例子參考連結 http://code4app.com/ios/EssentialImager/527cb3596803fa4e50000000 實現原理:其實就是用一張黑白的漸變圖片作為底圖 效果圖片: 具

Android Studio 使用ViewPager + Fragment實現滑動選單Tab效果 --簡易版

描述:         之前有做過一個記賬本APP,拿來練手的,做的很簡單,是用Eclipse開發的;         最近想把這個APP重新完善一下,添加了一些新的功能,並選用Android Studio來開發;         APP已經完善了一部分,現在就想把已經做好的功能整理一下,記錄下來。 效果圖

Android 夜間模式切換,顏色漸變效果實現

概述 做安卓開發有一段時間了,夜間模式的切換在各種APP中見多了,大部分都是點一下切換然後馬上改變配色,很是生硬,從來都沒去注意過!然後有一天我點了下知乎日報的夜間模式切換,直接被亮瞎狗眼!什麼?這還能漸變過去?不行了,得去研究研究……然後就有了這篇部

Css3實現四種漸變效果程式碼分享

一、八卦圖背景 程式碼: background: radial-gradient(circle at 50% 59%, #D2CAAB 3%, #364E27 4%, #364E27 11%, rgba(54,78,39,0) 12%, rgba(54,78,39,0)) 50px

CCS3怎麼實現border邊框漸變效果

    下圖註冊按鈕的邊框有漸變效果,如果讓你來實現,你會怎麼做呢           個人覺得,省事的做法,直接讓UI給背景圖片就可以了,如下圖          不過這種做法感覺不太靈活,如果要修改border的漸變顏色,就需要UI重新做圖。那應該

CCS3怎麽實現border邊框漸變效果

clas 背景圖 after 選擇 imu 圓角 png range ado   下圖註冊按鈕的邊框有漸變效果,如果讓你來實現,你會怎麽做呢         個人覺得,省事的做法,直接讓UI給背景圖片就可以了,如下圖      不過這種做法感覺不太靈活,如果

用QT實現字型顏色漸變效果——模擬彩色混光鍵盤

paint.h #ifndef PAINT_H #define PAINT_H #include <QWidget> #include <QtWidgets> class Paint : public QWidget { Q_OBJECT

css實現背景backgroup漸變效果,相容各個瀏覽器(直接生成)

筆者其實對於css一直是一知半解的狀態。今天公司的需求需要讓背景如圖上所示。 通過度娘找到了一個強大的背景漸變手動設計的網站,在此分享  gradient-editor(國外開發者)  順便獻上自己css程式碼。或許有些用處 background: rgb(

SVG 實現動態模糊動畫效果

今天我們將向大家展示如何製作SVG動態模糊效果,並將其應用於HTML元素的常規JS或CSS動畫。 動態模糊是一種廣泛使用於動態影像和動畫的技術,它能使動作看起來更加平滑自然。 線上演示原始碼下載 動態模糊是靜止影象或一系列影象(如電影或動畫)中快速移動物體的明顯影象拖尾。當記錄的影象在單幀記錄期間發生變化

ionic2 使用tabs+slides實現滑動切換頁面效果

說明 在一個頁面內嵌入多一個tab欄(我是在HomePage中),實現在此頁面中多頁面的滑動切換頁面 此案例也可以用於最外層的tab欄,具體如何實現自己嘗試一下就知道了 實現方法 1.建立一個空的頁面,即使tab跳轉一個空頁面; @Com

不用ViewPager和Fragment實現滑動頁面的效果

這是一篇被逼出來的文章。 一入SDK深似海,從此jar包是路人,沒錯,你以為我願意不用ViewPager和Fragment啊,因為SDK為了減少包體大小不能用v4的包啊!坑爹的v4包居然有1M多,你們可真能寫啊。我相信一定有朋友會建議說,把v4包裡相關的類摳出

自定義CoordinatorLayout的Behavior,實現ToolBar透明漸變效果

1.佈局 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.a

ViewPager+Fragment 實現滑動頁面的效果

佈局檔案如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android開發Splash介面亮度的漸變效果

public class WelcomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

微信小程式swiper實現滑動放大縮小效果

<swiper class="swiper-block" previous-margin="90rpx" next-margin="90rpx" current="0" bindchange="swiperChange"> <block wx:for=

如何使用TransitionDrawable實現背景切換漸變效果

使用TransitionDrawable為UI的背景切換新增交錯漸變的過渡效果 上一篇介紹瞭如何使用RippleDrawable為UI新增點選水波紋效果 這一篇將作為介紹Drawable的第二篇,講解如何使用TransitionDrawable來為UI背景切

android viewpager 縱橫向滑動 verticalviewpager根據timer實現自動播放

先看看viewpager怎麼實現的,自定義繼承viewpager 。 之前看到csdn覺得一個寫的不錯,,有很多方法來實現,,可以看看這些部落格 Android ViewPager 垂直滑動 縱向滑動 VerticalViewPager 可以繼續看看這個原始stackoverflow

Android UI控制元件應用分享:如何實現“帶分割線並且Item為正方形”的GridView

    首先說個題外話:其實到目前為止,在下寫的部落格並不多~但是每次寫部落格,基本都是因為在這之前做了某些東西,並且為之折磨了很久,看了很多雜亂不一的技術部落格,最終精選出最有效、簡單的方法來達到預期的效果。奠定在這樣的基礎之上,才決定寫些東西做出分享,不想讓後來者也像我

巧用Drawable 實現Android UI 元素間距效果

purple 固定 展示 .com otto 技巧 log contain dev 源文地址: 巧用Drawable 實現Android UI 元素間距效果 在大部分的移動UI或者Web UI都是基於網格概念而設計的。這種網格一般都是有一些對其的方塊組成,然後