您的位置:首页 > 移动开发 > Android开发

安卓虚化背景的实现

2017-11-18 16:33 288 查看

之前有一个需求就是要实现类似音乐播放器的虚化背景。在此整理一下

首先看看效果:



一、引入的包

compile 'jp.wasabeef:glide-transformations:2.0.2'


二、MainActivity

package com.example.dell.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.ImageSwitcher;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置全屏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
ImageSwitcher imgView = (ImageSwitcher) findViewById(R.id.imgView);
//图片地址【测试】
String imgUrl="http://www.hishop.com.cn/uploads/150914/21678-150914112244436.jpg";
Tool.setViewBlur(this,imgUrl,R.mipmap.ic_launcher, imgView);
}
}


三、activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dell.myapplication.MainActivity"
>
<ImageSwitcher
android:id="@+id/imgView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="#62393939" />

</FrameLayout>


三、Tool工具类

package com.example.dell.myapplication;

import android.content.Context;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

import jp.wasabeef.glide.transformations.BlurTransformation;

/**
* Created by burro on 2017/11/14.
*/

public class Tool {

//    设置图片虚化背景
public static void setViewBlur(final Context context, String path, int defImage, ImageSwitcher imgView) {
final BlurTransformation btf = new BlurTransformation(context, 10, 10);

imgView.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView view = new ImageView(context);
view.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
return view;
}
});
Glide.with(context)
.load(isReal(path) ? path : defImage)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.bitmapTransform(btf)
.crossFade()
.into((ImageView) imgView.getCurrentView());
}
private static boolean isReal(String string) {
return string != null && string.length() > 0 && !string.equals("null");
}
}
到此就可以实现上述效果~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 虚化背景