在Android应用中以模糊效果设置背景图片

我试图使列表视图上的背景图像模糊,但是我尝试按照教程进行操作,但它不起作用.任何人都请指教,谢谢.

主要活动

public class IngredientCategoryMain extends Activity {

ListView list;
String[] title;
CategoryImageAdapter adapter;





@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ingredient_category_main);

    list=(ListView)findViewById(R.id.listView);
    title = getResources().getStringArray(R.array.titles);
    adapter=new CategoryImageAdapter(this, mStrings, title);
    list.setAdapter(adapter);

}

@Override
public void onDestroy() {
    list.setAdapter(null);
    super.onDestroy();
}

public View.OnClickListener listener=new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        adapter.imageLoader.clearCache();
        adapter.notifyDataSetChanged();


    }
};

public void onItemClick(int mPosition) {
    String tempValues = title[mPosition];
    Toast.makeText(IngredientCategoryMain.this, "Click on image "+tempValues+" to enter", Toast.LENGTH_LONG).show();

}

private String[] mStrings={
        "https://pixabay.com/static/uploads/photo/2014/07/08/14/33/breads-387544_960_720.jpg",
        "http://mtbev.org/wp-content/uploads/2014/02/Bottles.jpg",
        "https://c2.staticflickr.com/8/7023/6548962149_7a9fdd9cf4_b.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/2/2f/Culinary_fruits_front_view.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/e/ea/Indian_Spices.jpg",
        "https://pixabay.com/static/uploads/photo/2016/01/13/17/21/raw-1138562_960_720.jpg",
        "https://pixabay.com/static/uploads/photo/2010/12/13/09/51/seed-1716_960_720.jpg",
        "https://upload.wikimedia.org/wikipedia/commons/b/ba/Rice_grains_(IRRI).jpg",
        "http://www.stock-free.org/images/Thanksgiving-Stock-Free-Image-08112015-image-239.jpg",
        "https://pixabay.com/static/uploads/photo/2012/10/01/18/34/dips-58738_960_720.jpg",
        "https://pixabay.com/static/uploads/photo/2013/07/19/00/18/seafood-165220_960_720.jpg",
        "https://c1.staticflickr.com/3/2877/10866943666_471d9f2845_b.jpg"
};


}

我设计了listview的xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">


<ImageButton
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:id="@+id/imageButton2"
    android:scaleType="fitXY"
    android:layout_below="@+id/textView2"
    android:layout_alignParentStart="true"
    android:layout_alignParentEnd="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/textView2"
    android:layout_marginLeft="20dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textColor="#f7338b"
    android:textStyle="bold"
    android:background="#80ffffff" />

和listview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.cassieleong.delishcart.IngredientCategoryMain"
tools:showIn="@layout/activity_ingredient_category_main"
android:background="#fde7e7">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"
    android:background="@drawable/appicon"/>

解决方法:

我最近遇到了Renderscript API.

//Set the radius of the Blur. Supported range 0 < radius <= 25
private static final float BLUR_RADIUS = 25f;

public Bitmap blur(Bitmap image) {
if (null == image) return null;

Bitmap outputBitmap = Bitmap.createBitmap(image);
final RenderScript renderScript = RenderScript.create(this);
Allocation tmpIn = Allocation.createFromBitmap(renderScript, image);
Allocation tmpOut = Allocation.createFromBitmap(renderScript, outputBitmap);

//Intrinsic Gausian blur filter
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
theIntrinsic.setRadius(BLUR_RADIUS);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
return outputBitmap;
} 

如下图所示,在图像视图中使用以上代码片段.

ImageView imageView = (ImageView) findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.nature);
Bitmap blurredBitmap = blur(bitmap);
imageView.setImageBitmap(blurredBitmap);

不要忘记在build.gradle文件中添加以下行

renderscriptTargetApi 18
renderscriptSupportModeEnabled true

参考:
http://javatechig.com/android/how-to-create-bitmap-blur-effect-in-android-using-renderscript

上一篇:android – Universal-Image-Loader | SSLHandshakeException:握手失败


下一篇:android-通过linearlayout移动图像