概述
1.中间的是一个ViewPager 左右无限轮播,跳过
2.背景是当前条目的图片的 高斯模糊版
使用Glide
.apply(RequestOptions.bitmapTransform(new BlurTransformation(25, 3)))
3.图片实现渐变之类的效果是Glide 的 加载动画
.transition(DrawableTransitionOptions.withCrossFade(1000))
但是这个动画实现有前提的 就是必须设置占位图
然而这里必须设置为上一张图 之前的实现
Glide.into(new Target{
void onResourReady() 这里得到一个 drawable 然后imageView setdrawable 就不会出现闪屏白一下的
})
然而这样是没有渐变的那种效果 我们需要拿到上一张图片 作为placeHolder
private List<Drawable> list = new ArrayList<>();
private class getImageCacheAsyncTask extends AsyncTask<String, Void, File> {
private final Context context;
public getImageCacheAsyncTask(Context context) {
this.context = context;
}
@Override
protected File doInBackground(String... params) {
String imgUrl = params[0];
try {
return Glide.with(context)
.load(imgUrl)
.apply(RequestOptions.bitmapTransform(new BlurTransformation(25, 3)))
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.get();
} catch (Exception ex) {
return null;
}
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
protected void onPostExecute(File result) {
if (result == null) {
return;
}
//此path就是对应文件的缓存路径
String path = result.getPath();
Bitmap bmp = BitmapFactory.decodeFile(path);
list.add(ImageUtils.bitmap2Drawable(blurBitmap(_mActivity, bmp, 25)));
}
}
// 图片缩放比例(即模糊度)
private static final float BITMAP_SCALE = 0.4f;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public static Bitmap blurBitmap(Context context, Bitmap image, float blurRadius) {
// 计算图片缩小后的长宽
int width = Math.round(image.getWidth() * BITMAP_SCALE);
int height = Math.round(image.getHeight() * BITMAP_SCALE);
Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
RenderScript rs = RenderScript.create(context);
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
blurScript.setRadius(blurRadius);
blurScript.setInput(tmpIn);
blurScript.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
return outputBitmap;
}
主要就是 我们要拿到上一张图的drawable 因为placeholder 的参数要求 ,我们必须提前给他进行模糊,然后在设置.
最后
以上就是单纯大山为你收集整理的Android 仿网易云首页实现左右滑动背景色跟着渐变 完善版的全部内容,希望文章能够帮你解决Android 仿网易云首页实现左右滑动背景色跟着渐变 完善版所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复