1.描述:项目中使用高斯模糊的话有可能会使用到etsyblur,这次就看看etsyblur遇到的一个错误:
项目中不兼容的现象是频频出现,下面看看依赖:
compile 'com.ms-square:etsyblur:0.2.1'
//高斯模糊-毛玻璃
implementation ('com.ms-square:etsyblur:0.2.1'){
transitive = true;
}
2.使用:(下面的view表示设置模糊背景的布局的最外层父控件的id)
private BlurringView blurringView;
blurringView = (BlurringView) layout.findViewById(R.id.blurring_view);
blurringView.blurredView(view);//模糊背景
布局:
<com.ms_square.etsyblur.BlurringView
android:id="@id/blurring_view"
android:layout_width="match_parent"
app:radius="17"
app:overlayColor="#66eeeeee"
android:layout_height="match_parent"
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rel"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.ms_square.etsyblur.BlurringView
android:id="@id/blurring_view"
android:layout_width="match_parent"
app:radius="17"
app:overlayColor="#66eeeeee"
android:layout_height="match_parent"
/>
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_alignParentBottom="true"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_sbs"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:gravity="center_horizontal"
android:layout_marginTop="50dp"
android:drawablePadding="10dp"
android:drawableTop="@drawable/tabbar_compose_idea"
android:text="发布身边事"
android:textColor="@color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_search"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:clickable="true"
android:drawablePadding="10dp"
android:drawableTop="@drawable/tabbar_compose_more"
android:gravity="center_horizontal"
android:text="搜索"
android:textColor="@color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_course"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginTop="50dp"
android:layout_height="wrap_content"
android:clickable="true"
android:drawablePadding="10dp"
android:drawableTop="@drawable/tabbar_compose_photo"
android:gravity="center_horizontal"
android:text="我要开课"
android:textColor="@color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_task"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:clickable="true"
android:drawablePadding="10dp"
android:drawableTop="@drawable/tabbar_compose_review"
android:gravity="center_horizontal"
android:text="发布任务"
android:textColor="@color/black"
android:textSize="15sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/rel_close"
android:layout_width="wrap_content"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="15dp"
android:src="@drawable/tabbar_compose_background_icon_close" />
</RelativeLayout>
</RelativeLayout>
解决方法:
dependencies {
compile 'com.ms-square:etsyblur:0.2.1'
}
android {
defaultConfig {
renderscriptTargetApi 25
renderscriptSupportModeEnabled true
}
}
ScriptIntrinsicBlur 是在API 17加入的,因此低版本的手机是用不了,为了能兼容低版本的手机,我们还得探索其他方案。
RenderScript 兼容包:
所幸的是,Google 为了兼容低版本也可以用RenderScript,加了一个兼容包,android.support.v8.renderscript ,使用support.v8.renderscript
就能兼容到Android 2.3版本(API 9),现在市面上估计没有比2.3版本还低的手机了(4.x 的手机都不多了)。使用兼容包和使用原生的RenderScript完全一样,代码还是上面的代码。只是需要在app 的build.gradle添加如下的代码
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
// 使用support.v8.renderscript
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
}
}
也就是添加:
// 使用support.v8.renderscript
renderscriptTargetApi 18
renderscriptSupportModeEnabled true