Android扩展文件到自定义Picasso Downloader - InputStream

时间:2015-03-02 04:00:55

标签: android inputstream picasso apk-expansion-files

我正在处理这段代码,我用Picasso填充城市图片并从扩展文件中获取。然后,我按照说明herehere

没有人为我工作。下面的代码如下:

final ExpansionFileLoader expansionFileLoader = new ExpansionFileLoader(this, App.Constants.EXPANSION_FILE_VERSION_NUMBER);

        Picasso picasso = new Picasso.Builder(this)
                .downloader(new Downloader() {
                    @Override
                    public Response load(Uri uri, int networkPolicy) throws IOException {
                        Log.d("CityActivity", "loading the image file of the chosen city");
                        InputStream inputStream = expansionFileLoader.getInputStream(uri.toString());
                        return new Response(inputStream, false, -1);
                    }

                    @Override
                    public void shutdown() {

                    }
                })
                .build();

        picasso.load(Uri.parse(App.ViewData.selectedCity.image_file_path)).into(PicassoTools.setBackgroundTarget(findViewById(R.id.navigation_drawer_layout)));

我在下载程序中添加了断点,主要原因是因为某些原因没有调用load。因此,在创建下载程序或Picasso构建器时,我可能会犯一些基本错误。

顺便说一下,我正在使用Picasso 2.5。

这是我的目标设置(这只是一个细节,并且对于要调用的加载方法无关紧要):

public static Target setBackgroundTarget(View view) {
    return setBackgroundTarget(view, null);
}

public static Target setBackgroundTarget(View view, Runnable callback) {
    Target target = new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            int sdk = android.os.Build.VERSION.SDK_INT;
            if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                view.setBackgroundDrawable(new BitmapDrawable(App.context.getResources(), bitmap));
            } else {
                view.setBackground(new BitmapDrawable(App.context.getResources(), bitmap));
            }
            if (callback != null) callback.run();
        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {
            Log.e("PICASSO", "Bitmap Failed");
        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {
            // use placeholder drawable if desired
            Log.d("PICASSO", "Bitmap Preload");
        }
    };
    view.setTag(target);
    return target;

}

让我知道你想知道的任何其他细节。非常感谢您的帮助。 干杯

0 个答案:

没有答案