Skip to content

使用tranferee过程中的疑问. #26

@xoptimal

Description

@xoptimal

项目已经使用Glide , 下面是配置的参数:

       TransferConfig config = TransferConfig.build()
                .setNowThumbnailIndex(position)
                .setSourceImageList(sourceImageList)
                .setOriginImageList(originImageList)
                .setProgressIndicator(new ProgressBarIndicator())
                .setIndexIndicator(new NumberIndexIndicator())
                .setJustLoadHitImage(true)
                .setImageLoader(TranGlideImageLoader.with(context))
                .create();

        // 实现
        mTransferee.apply(PhotoPicker.getPreViewConfig(position, mGridCommodity.getData(), getItemView(grid_commodity))).show(new Transferee.OnTransfereeStateChangeListener() {
                    @Override
                    public void onShow() {
                        Glide.with(ShopCSActivity.this).pauseRequests();
                    }

                    @Override
                    public void onDismiss() {
                        Glide.with(ShopCSActivity.this).resumeRequests();
                    }
                });

疑问:
我这边有2种使用场景, 一种是本地, 一种是网络图片 ....
现在传递的List是一组本地的图片, 奈何进入后一直在转圈 (按道理glide是识别的)
然后就是, 我不明白你这个所谓的内置GlideImageLoader 和 UniversalImageLoader 我默认是没导入进来这个 model, 采用的是自己的ImageLoader: TranGlideImageLoader

public class TranGlideImageLoader implements ImageLoader {
    private static final String SP_FILE = "transferee";
    private static final String SP_LOAD_SET = "load_set";

    private Context context;
    private SharedPreferences loadSharedPref;

    private TranGlideImageLoader(Context context) {
        this.context = context;
        loadSharedPref = context.getSharedPreferences(
                SP_FILE, Context.MODE_PRIVATE);
    }

    public static TranGlideImageLoader with(Context context) {
        return new TranGlideImageLoader(context);
    }

    @Override
    public void showSourceImage(final String srcUrl, ImageView imageView, Drawable placeholder, final SourceCallback sourceCallback) {
        Glide.with(context)
                .load(srcUrl)
                .dontAnimate()
                .placeholder(placeholder)
                .into(imageView);
    }

    @Override
    public void loadThumbnailAsync(String thumbUrl, ImageView imageView, final ThumbnailCallback callback) {
        Glide.with(context)
                .load(thumbUrl)
                .dontAnimate()
                .into(imageView);
    }

    @Override
    public boolean isLoaded(String url) {
        Set<String> loadedSet = loadSharedPref.getStringSet(SP_LOAD_SET, new HashSet<String>());
        return loadedSet.contains(url);
    }

    @Override
    public void clearCache() {
        loadSharedPref.edit()
                .remove(SP_LOAD_SET)
                .apply();

        Executors.newSingleThreadExecutor().submit(new Runnable() {
            @Override
            public void run() {
                Glide.get(context).clearDiskCache();
                Glide.get(context).clearMemory();
            }
        });
    }

    /**
     * 使用 BannerImageLoader 时,需要缓存已加载完成的图片Url
     *
     * @param url 加载完成的图片Url
     */
    public void cacheLoadedImageUrl(final String url) {
        Executors.newSingleThreadExecutor().submit(new Runnable() {
            @Override
            public void run() {
                Set<String> loadedSet = loadSharedPref.getStringSet(SP_LOAD_SET, new HashSet<String>());
                if (!loadedSet.contains(url)) {
                    loadedSet.add(url);

                    loadSharedPref.edit()
                            .clear() // SharedPreferences 关于 putStringSet 的 bug 修复方案
                            .putStringSet(SP_LOAD_SET, loadedSet)
                            .apply();
                }
            }
        });
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions