滑行返回图像的先前大小

时间:2018-06-20 11:20:29

标签: android android-recyclerview android-glide

我的问题是我正在网格视图中的ListGrid布局管理器之间切换。该项目仅保留一个ImageView

<layout>
<data>
    <variable
        name="photoUrl"
        type="String"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/frameRootPhotos"
    android:layout_height="wrap_content">

    <com.talkinginvite.widgets.SquareImageView
        android:layout_width="match_parent"
        app:squareImage="@{photoUrl}"
        android:scaleType="fitXY"
        android:src="@drawable/placeholder_list"
        android:layout_margin="@dimen/_6sdp"
        app:placeholder="@{@drawable/placeholder_list}"
        android:layout_height="wrap_content" />
</LinearLayout>

我正在将图像加载为。

@BindingAdapter(value = { "squareImage", "placeholder" }, requireAll = false)
public static void loadSquareImage(ImageView view, String url, Drawable placeholder){
    if(!TextUtils.isEmpty(url)) {
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.placeholder(placeholder);
        requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
        requestOptions.transform(new RoundedCornersTransformation(AppUtil.getRoundedRadiusLarge(),0));
        requestOptions.error(placeholder);
        Glide.with(view).load(url)
                .apply(requestOptions)
                .into(view);
    }

我的问题是在切换期间,有时ListView会以Grid View项的大小显示图像。如您所见,我的列表项是正方形图像,网格包含3列。 另外,我认为在转换过程中,有时Glide使用的是旧图像,而不是对所得图像进行双重转换,并且其显示的模糊度和拐角半径为两倍。

下面是我的切换方式。

 private void switchLayoutManager(){
    if(isListView){
        LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
        binding.rvPhotos.setLayoutManager(layoutManager);
    }else{
        GridLayoutManager layoutManager=new GridLayoutManager(getActivity(),3);
        binding.rvPhotos.setLayoutManager(layoutManager);
    }
}

我的方法有问题吗?我如何避免Glide的此类行为。这也是切换layoutManager的正确方法吗?还是我应该使用两个RecyclerView
注意:-我还需要维护缓存,这是非常基本的要求。因此,我无法跳过Glide的缓存。

0 个答案:

没有答案