Android中實(shí)現(xiàn)iOS中的毛玻璃效果
為了實(shí)現(xiàn)毛玻璃效果,我們需要一組compute kernels(.rs文件中編寫(xiě)),及一組用于控制renderScript相關(guān)的Javaapi(.rs文件自動(dòng)生成為Java類(lèi))。 由于compute kernels的編寫(xiě)需要一定的學(xué)習(xí)成本,從JELLY_BEAN_MR1開(kāi)始,Androied內(nèi)置了一些compute kernels用于常用的操作,其中就包括了Gaussian blur。
下面,通過(guò)實(shí)操來(lái)講解一下RenderScript來(lái)實(shí)現(xiàn)高斯模糊,最終實(shí)現(xiàn)效果(講文字背景進(jìn)行模糊處理):


實(shí)現(xiàn)代碼:
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><textarea style="width:99%;height:99%">private
void applyBlur() {
image.getViewTreeObserver().addOnPreDrawListener(new
ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
image.getViewTreeObserver().removeOnPreDrawListener(this);
image.buildDrawingCache();
Bitmap bmp = image.getDrawingCache();
blur(bmp, text, true);
return true;
}
});
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg, View view) {
long startMs = System.currentTimeMillis();
float radius = 20;
Bitmap overlay = Bitmap.createBitmap((int)(view.getMeasuredWidth()),
(int)(view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(overlay);
canvas.translate(-view.getLeft(), -view.getTop());
canvas.drawBitmap(bkg, 0, 0, null);
RenderScript rs = RenderScript.create(SecondActivity.this);
Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay);
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs,
overlayAlloc.getElement());
blur.setInput(overlayAlloc);
blur.setRadius(radius);
blur.forEach(overlayAlloc);
overlayAlloc.copyTo(overlay);
view.setBackground(new BitmapDrawable(getResources(), overlay));
rs.destroy();
statusText.setText("cost " + (System.currentTimeMillis() - startMs) +
"ms");
}</textarea></body></html>
布局如下:
<?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" >
<ImageView
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/splash"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/text"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Gaussian Blur"
android:textColor="@android:color/black"
android:layout_gravity="center_vertical"
android:textStyle="bold"
android:textSize="48sp" />
<LinearLayout
android:id="@+id/controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7f000000"
android:orientation="vertical"
android:layout_gravity="bottom" />
</FrameLayout>
以上所述是小編給大家介紹的Android中實(shí)現(xiàn)iOS中的毛玻璃效果,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android 實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
android使用Intent來(lái)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),接下來(lái)通過(guò)本文給大家分享Android 實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的實(shí)例代碼,需要的的朋友參考下吧2017-09-09
Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析
下面小編就為大家?guī)?lái)一篇Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
Android實(shí)戰(zhàn)教程第二篇之簡(jiǎn)單實(shí)現(xiàn)兩種進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)戰(zhàn)教程第二篇,簡(jiǎn)單實(shí)現(xiàn)兩種進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
詳解Android USB轉(zhuǎn)串口通信開(kāi)發(fā)基本流程
本篇文章主要介紹了Android USB轉(zhuǎn)串口通信開(kāi)發(fā)基本流程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Android使用webView加載html頁(yè)面的詳細(xì)步驟
Android WebView是Android開(kāi)發(fā)中提供的一種用于顯示網(wǎng)頁(yè)內(nèi)容的組件,它可以加載網(wǎng)頁(yè)的url鏈接,也可以加載本地的html文件,下面這篇文章主要給大家介紹了關(guān)于Android使用webView加載html頁(yè)面的相關(guān)資料,需要的朋友可以參考下2024-06-06
Android實(shí)現(xiàn)二維碼掃描并登陸網(wǎng)頁(yè)
這篇文章主要介紹了Android實(shí)現(xiàn)二維碼掃描并登陸網(wǎng)頁(yè)的相關(guān)資料,需要的朋友可以參考下2016-05-05
android開(kāi)發(fā)教程之textview內(nèi)容超出屏幕寬度顯示省略號(hào)
android開(kāi)發(fā)中用textview顯示內(nèi)容時(shí),顯示內(nèi)容過(guò)多可能會(huì)折行或顯示不全,那樣效果很不好,我們可以用省略號(hào)顯示,下面看設(shè)置方法2014-02-02
Android控制閃光燈的方法(打開(kāi)與關(guān)閉)
這篇文章主要介紹了Android控制閃光燈的方法,可實(shí)現(xiàn)閃光燈打開(kāi)與關(guān)閉的效果,涉及Android操作Camera拍照閃光燈的相關(guān)技巧,需要的朋友可以參考下2016-01-01

