Android Activity 實時模糊效果
效果圖如下:
程式碼如下:
public class BlurWindow { private Window mWindow; private WindowManager mWindowManager; private View mEmptyView; public static final int START_BLUR = 0; public static final int STOP_BLUR = 1; private static final int EMPTY_SIZE = 0; private Handler mHandler = new Handler() { private boolean isAdd = false; public void handleMessage(android.os.Message msg) { switch (msg.what) { case START_BLUR: if (!isAdd) { WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.flags |= (LayoutParams.FLAG_BLUR_BEHIND | LayoutParams.FLAG_NOT_FOCUSABLE); lp.format = PixelFormat.TRANSPARENT; lp.width = EMPTY_SIZE; lp.height = EMPTY_SIZE; lp.type = LayoutParams.TYPE_APPLICATION; mWindowManager.addView(mEmptyView, lp); isAdd = true; } break; case STOP_BLUR: mWindowManager.removeView(mEmptyView); isAdd = false; break; default: break; } }; }; public BlurWindow(Activity activity) { mWindow = activity.getWindow(); mWindowManager = mWindow.getWindowManager(); mEmptyView = new View(activity); } public void startBlur() { mHandler.sendEmptyMessage(START_BLUR); } public void stopBLur() { mHandler.sendEmptyMessage(STOP_BLUR); } } //sleep 1.5s 然後模糊 再sleep2.0s 再去除模糊 public class BlurWindowActivity extends Activity { /** Called when the activity is first created. */ BlurWindow window; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); window = new BlurWindow(this); //startActivity(new Intent("com.test")); new Thread() { public void run() { try { Thread.sleep(1500); } catch (InterruptedException e) { e.printStackTrace(); } window.startBlur(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } window.stopBLur(); }; }.start(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } }
由於在activity中設定FLAG_BLUR_BEHIND無法立即生效,所以採用了addView這種方式促使它生效。FLAG_NOT_FOCUSABLE這個flag非常關鍵,如果不設定,將導致新加入的view獲取了焦點,但無法控制包括返回按鈕都不能用,需要你重新對window設定callback,參見Dialog的原始碼。
lp.width = EMPTY_SIZE;
lp.height = EMPTY_SIZE;
高度和寬度如果不設定為0,那就設定一下它的alpha為0或者fomat為TRANSPARENT,否則將會導致新加入的空的view充滿全螢幕而且是黑的。
另外,需要注意的是,這個控制是和某個activity的window強相關的,所以只能用於某個actvity。
如果有更好的方法或者能對以上程式碼進行優化,歡迎大家共享出來。
如果這個程式碼是在activity生命週期中執行而不是延緩執行,比如在onCreate中進acitivty時會黑一下,不知道這個是怎麼回事。
相關推薦
Android Activity 實時模糊效果
效果圖如下: 程式碼如下: public class BlurWindow { private Window mWindow; private WindowManager mWindowManager; private View mEmptyView
Xamarin.android Activity動畫切換效果實現
omx over tails detail ons too ide xamarin Coding http://blog.csdn.net/esunshine1985/article/details/44302903 1.在Resources——values下新建sty
Android 高斯模糊效果從319ms到3ms的優化實現
之前做過高斯模糊的的效果,不過依賴一個三方庫,今天看到了一篇文章,一個類檔案就能解決,感覺竊喜,分享給大家。 使用: Glide.with(getActivity()).load(mUser.avatarUrl).asBitmap().into(ne
Android 卡片邊框模糊陰影效果實現
1. 使用<shape>標籤實現 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
Android使用RenderScript實現圖片的高斯模糊效果
Android使用RenderScript實現圖片的高斯模糊效果 首先來看一下什麼是高斯模糊效果呢? 高斯模糊(英語:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等影象處理軟體中廣泛使用的處理效果,通常用它
Android的Activity實時重新整理
簡介 這幾天在寫Android,想要對當前的Activity進行資料的實時重新整理更新,可以使用多執行緒實現 上程式碼 public class MainActivity extends AppCompatActivity { private boolean run =
Android中幾個Activity實現平移效果
問題描述:現假設有4個activity,每個actvity介面的底部都有兩個按鈕,一個是回到前一頁,一個是到下一頁。頁面跳轉的邏輯相對比較簡單,下面來談一下如何給這4個Activity加上平移效果。 問題分析: 步驟: 1.在應用程式——>res目錄下新
Android也能流暢實現毛玻璃效果(高斯模糊)效果
前言 上圖就是我們在IOS裝置上經常能夠見到的毛玻璃(高斯模糊)效果。不得不說,這種效果在適合的場景下使用,能夠獲得絕佳的美感。但是鑑於Android裝置效能和相容性問題,我們通常很難在Android裝置上見到這種效果。 但這並不是IOS的專利效果,Android
【Android】邊框旁的文字實現模糊效果
【問題】 如何實現幾行文字的最上面1行和最下面1行的文字為漸變模糊的效果; 【效果圖】 【思路】 簡單來說:用一個漸變的透明的View來覆蓋兩邊的文字區域;具體來說:(這裡只考慮[區域2])最
Android中為網路圖片設定高斯模糊效果
寫一個方法,用來對Bitmap進行高斯模糊: public static Bitmap blurBitmap(Bitmap bitmap ,Context context){ //Let
Android 下實現高效的模糊效果
作者 | Dajavu 地址 | http://www.jianshu.com/p/4abce9d7b347 宣告 | 本文是 Dajavu 原創,已獲授權釋出,未經原作者允許請勿轉載 前言 其實有關 android 下實現圖片模糊的文章有很多,大多都是使用
Android——圖片設定為高斯模糊效果(ImageView)
效果圖://模糊 Resources res = ShowActivity.this.getResources(); //拿到初始圖 Bitmap bmp= BitmapFactory.decodeRe
android 製作ios毛玻璃效果(圖片模糊處理)
先不說廢話直接上效果圖 毛玻璃效果在ios裡是非常常見的,但是在android上卻很少見,這是為什麼呢? ios系統本身就應用了非常多的毛玻璃效果,系統對這種效果有相對比較好的處理,但是android系統並沒有類似的api,直到現在的SDK22也沒有
Android快速實現動態模糊效果
寫在前面現在,越來越多的App裡面使用了模糊效果,這種模糊效果稱之為高斯模糊。大家都知道,在Android平臺上進行模糊渲染是一個相當耗CPU也相當耗時的操作,一旦處理不好,卡頓是在所難免的。一般來說,考慮到效率,渲染一張圖片最好的方法是使用OpenGL,其次是使用C++/C
Android 自定義設定圖片模糊度、高斯模糊效果
最近專案中有需要到“毛玻璃”效果,網上找一下,千篇一律。高談闊論扯淡的多,真正有用的沒幾個! 藉助此文,做修改之後,實現效果!我只是個搬運工,在此表示感謝! 淡不多扯,直接上程式碼: MainActivity: public class MainActiv
Android本地圖片或者網路圖片高斯模糊效果(毛玻璃效果)圖片模糊效果一行程式碼搞定
一,實現本地圖片或者網路圖片的毛玻璃效果特別方便,只需要把下面的FastBlurUtil類複製到你的專案中就行 package com.testdemo.blur_image_lib10; import android.graphics.Bitmap; import andr
android圖片特效處理之模糊效果
這篇將講到圖片特效處理的模糊效果。跟前面一樣是對畫素點進行處理,演算法是通用的,但耗時會更長,至於為什麼,看了下面的程式碼你就會明白。演算法: 一、簡單演算法:將畫素點周圍八個點包括自身一共九個點的RGB值分別相加後平均,作為當前畫素點的RGB值,即可實現效果。 舉例: A
Android學習之BlurImageView實現影象模糊效果
今天看了jj大神的部落格,裡面寫了一篇關於基於universalImageLoader實現圖片載入控制元件BlurImageView,看了不甚欣喜,就寫篇博文記錄以記之,望大家共勉之。 第一件事,上效果圖,這樣大家才能真正瞭解這個控制元件的效果,大家看了之後一
Android如何實現毛玻璃效果之Android高階模糊技術
自從iOS系統引入了Blur效果,也就是所謂的毛玻璃、模糊化效果,磨砂效果,各大系統就開始競相模仿,這是怎樣的一個效果呢,我們先來看一下,如下面的圖片: 效果我們知道了,如何在Android中實現呢,說白了就是對圖片進行模糊化處理,小編先給大家講一下Android高階模糊
巧用Drawable 實現Android UI 元素間距效果
purple 固定 展示 .com otto 技巧 log contain dev 源文地址: 巧用Drawable 實現Android UI 元素間距效果 在大部分的移動UI或者Web UI都是基於網格概念而設計的。這種網格一般都是有一些對其的方塊組成,然後