小視訊app原始碼,動態毛玻璃背景的簡單實現
小視訊app原始碼,動態毛玻璃背景的簡單實現的相關程式碼
XML處呼叫
<com.lpoint.widget.BlurBGImageView android:id="@+id/img_vague" android:layout_width="300dp" android:layout_centerInParent="true" android:layout_height="200dp"/>
完整的BlurBGImageView類
import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; import android.renderscript.ScriptIntrinsicBlur; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import androidx.annotation.Nullable; @SuppressLint("AppCompatCustomView") public class BlurBGImageView extends ImageView { Bitmap overlay; int scaleFactor = 2; int radius = 8; public BlurBGImageView(Context context) { super(context); } public BlurBGImageView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public BlurBGImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setScaleFactor(int scaleFactor) { this.scaleFactor = scaleFactor; } public void refreshBG(View bgView){ bgView.setDrawingCacheEnabled(true); bgView.buildDrawingCache(); Bitmap bitmap1 = null; try { bitmap1 = getBitmap(bgView); } catch (Exception e) { e.printStackTrace(); } if (bitmap1 != null){ blur(bitmap1,this,radius);//模糊處理 bitmap1.recycle(); } bgView.setDrawingCacheEnabled(false);//清除快取 } private void blur(Bitmap bkg, ImageView view, float radius) { if (overlay != null){ overlay.recycle(); } overlay = Bitmap.createScaledBitmap(bkg, bkg.getWidth() / scaleFactor, bkg.getHeight() / scaleFactor, false); overlay = blur(getContext(),overlay, radius);//高斯模糊 view.setImageBitmap(overlay); } private Bitmap blur(Context context, Bitmap image, float radius) { RenderScript rs = RenderScript.create(context); Bitmap outputBitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Bitmap.Config.ARGB_8888); Allocation in = Allocation.createFromBitmap(rs, image); Allocation out = Allocation.createFromBitmap(rs, outputBitmap); ScriptIntrinsicBlur intrinsicBlur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); intrinsicBlur.setRadius(radius); intrinsicBlur.setInput(in); intrinsicBlur.forEach(out); out.copyTo(outputBitmap); image.recycle(); rs.destroy(); return outputBitmap; } private Bitmap getBitmap(View view){ //獲取螢幕整張圖片 Bitmap bitmap = view.getDrawingCache(); if (bitmap != null) { //需要擷取的長和寬 int outWidth = this.getWidth(); int outHeight = this.getHeight(); //獲取需要截圖部分的在螢幕上的座標(view的左上角座標) int[] viewLocationArray = new int[2]; this.getLocationOnScreen(viewLocationArray); int[] listLocationArray = new int[2]; view.getLocationOnScreen(listLocationArray); //從螢幕整張圖片中擷取指定區域 bitmap = Bitmap.createBitmap(bitmap, viewLocationArray[0] - listLocationArray[0], viewLocationArray[1] - listLocationArray[1], outWidth, outHeight); } return bitmap; } }
以上就是 小視訊app原始碼,動態毛玻璃背景的簡單實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2843871/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- 手機直播原始碼,Android studio 實現簡單的視訊播放原始碼Android
- 直播app系統原始碼,動態遇到視訊時開始自動播放APP原始碼
- 視訊直播app原始碼,不同分類頂部背景色APP原始碼
- 視訊直播app原始碼,Android端簡單的時間選擇器(包括12小時制和24小時制)APP原始碼Android
- 短視訊原始碼,uniapp中單選框radio的實現原始碼APP
- 小視訊原始碼,CSS 實現半透明邊框效果原始碼CSS
- Redis原始碼之SDS簡單動態字串Redis原始碼字串
- 短視訊app原始碼,提示以按鈕彈窗的形式實現APP原始碼
- php短視訊原始碼,vue遞迴動態載入選單PHP原始碼Vue遞迴
- 智慧家居簡單實現---使用ESP8266簡單實現和APP通訊APP
- 短視訊app原始碼,實現原生js圖片預覽效果APP原始碼JS
- 短視訊系統原始碼,動態內容實現長按複製貼上原始碼
- 短視訊程式原始碼,PageSlider實現滑動頁面原始碼IDE
- Promise 原始碼:實現一個簡單的 PromisePromise原始碼
- 這可能是實現高斯模糊(毛玻璃)最簡單的庫了
- 短視訊直播原始碼,實現頂部導航欄背景圖片漸隱漸現效果原始碼
- app直播原始碼,ButtonTextView的背景設定APP原始碼TextView
- 短視訊直播系統,簡單實現個人主頁背景圖片和文字顏色的更改
- Flutter實現用視訊背景的登入頁Flutter
- 小程式如何實現自動回覆訊息的功能?一個簡單的方法
- 如何在遊戲陪玩app原始碼中實現簡訊驗證碼登入?遊戲APP原始碼
- 使用java動態位元組碼技術簡單實現arthas的trace功能。Java
- 直播app原始碼,背景主題以及狀態列的更改和設定APP原始碼
- Spring的JDK動態代理如何實現的(原始碼解析)SpringJDK原始碼
- 影片直播app原始碼,vue實現列表自動滾動的方式APP原始碼Vue
- 小說APP原始碼,實現帶下劃線的密碼輸入框APP原始碼密碼
- canvas實現動態替換人物的背景顏色Canvas
- 短視訊平臺原始碼,構建簡單的底部導航欄原始碼
- 線上直播系統原始碼,簡單實現Android應用的啟動頁原始碼Android
- 如何實現直播間原始碼重要的簡訊驗證碼功能原始碼
- 視訊直播app原始碼,點選圖片放大再點選縮小APP原始碼
- 短視訊app原始碼,連麥時最小化出現可移動懸浮窗APP原始碼
- 使用Netty和動態代理實現一個簡單的RPCNettyRPC
- 短視訊系統原始碼,直播間實現彈幕的自動傳送原始碼
- 直播帶貨app原始碼,實現移動端的按鈕拖動APP原始碼
- 影片直播原始碼,前端canvas動態驗證碼實現原始碼前端Canvas
- 實現一個簡單版本的vue及原始碼解析(二)Vue原始碼