我是靠谱客的博主 单纯大山,最近开发中收集的这篇文章主要介绍Android 仿网易云首页实现左右滑动背景色跟着渐变 完善版,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


 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 仿网易云首页实现左右滑动背景色跟着渐变 完善版所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部