相关疑难解决方法(0)

嵌套滚动视图内的Recyclerview加载所有数据,而不是滚动时逐个调用图像

在我的应用程序中,我正在使用tabHost Activiy.在tabhost第一个选项卡中,我正在使用TabActivity,我正在加载超过500个图像.

使用嵌套的SCroll视图:

我在recyclerview中使用了嵌套滚动视图.当加载主页时,它最初加载所有500个图像,然后显示主页.因此它会导致内存错误.

不使用嵌套的SCroll视图:

如果我删除嵌套滚动视图,一切都运行良好.滚动时逐个加载图像.它不会导致内存不足错误.

我的要求:

我需要滚动放置在recyclerview顶部的相对布局.所以我使用嵌套滚动视图.但它对我不起作用.

tab_home_layout:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.NestedScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
     >

<LinearLayout
    android:id="@+id/tab_home_activity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

        <RelativeLayout
            android:id="@+id/home_layout_top_2_recycler"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/layout_border"
            >

            <ImageView
                android:id="@+id/img_user_home_tab_recycler"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:layout_centerVertical="true"
                android:contentDescription="@string/cont_desc"
                android:src="@drawable/profile_pic_blue" />

            <TextView
                android:id="@+id/tv_user_mind_home_tab_recycler"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@+id/img_user_home_tab_recycler"
                android:hint="@string/whats_on"
                android:textColor="@color/Black"
                android:textSize="@dimen/txt_size" />
        </RelativeLayout>

    <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_list_tab_home_recycler"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="none"
            android:visibility="visible" />

     </LinearLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

下面我愿意分享我到目前为止所尝试的内容.

  • 我试过这个SO帖子.但是我在tabActivity里面使用主页.所以我不能使用工具栏+协调器布局.所以这个解决方案对我没用.

  • 然后我尝试使用多个布局 进行recyclerview.But这对我不起作用.因为relativelayout是静态的.如果我从webservice获得任何条件,我可以使用多个布局recyclerview.But我需要只是滚动视图.

  • 我计划设置adapter.But我的web服务图像被加载从第0 position.So我不能设置在零位置在适配器静态的RelativeLayout的第0位静态RelativeLayout的.

是否有任何替代解决方案来解决这个问题.谢谢.

android android-recyclerview

14
推荐指数
2
解决办法
7048
查看次数

使用滑动加载大尺寸图像时出现OutOfMemoryException

所以,我一直在使用这个神奇的图书馆Glide在我的画廊应用程序中显示原生图像.我使用ViewPagerFragmentStatePagerAdapter展示全尺寸的图像.寻呼机的屏幕外限制是1(默认为保存存储器).我正在使用此代码将图像加载到ViewPager我的片段中:

Glide.with(getActivity())
     .loadFromMediaStore(uri)
     .asBitmap()
     .signature(new MediaStoreSignature(mimeType, dateModified, 
     .into(mImageView);
Run Code Online (Sandbox Code Playgroud)

现在,我在这里面临一些问题:

  1. 图像需要相当长的时间才能加载(如果没有缓存).因此,当用户滚动浏览器时,在加载图像时会显示空白屏幕,这是我想要避免的.有什么方法可以做到这一点吗?也许通过预先处理图像?
  2. 有时,在滚动大尺寸图像(主要是相机照片)时,会抛出OOM异常,并且由于没有加载图像,用户将留下空白屏幕.当我从potrait转为横向模式时,也会发生这种情况.所以,我试图用类似的方法atMost()-这降低图像的质量进一步的图像已经加载RGB_565并且approximate()这也是造成OOM.如何在不获得OOM异常的情况下实现最高图像质量?

对于第二个问题,我正在考虑为屏幕外项目加载质量较差的图像,然后在屏幕上显示时提高质量.可能吗?

我也试过使用ARGB_8888但结果是一样的:OOM异常.

android out-of-memory android-glide

4
推荐指数
1
解决办法
6939
查看次数

使用android ReclerView滑行显示OutOfMemory Error(OOM)

我正在使用Glide和RecyclerView来加载许多具有不同尺寸和尺寸的图像(大约200个).

我有三个问题:

  1. 图像有时加载成功,有时应用程序崩溃给OOM.

  2. 如果图像成功加载,则滚动是滞后的.

  3. 如果我刷新布局并重新加载相同的图像,那么它会尝试加载图像但在完成之前失败并给出OOM.

以下是相关代码:

public static class MyViewHolder extends RecyclerView.ViewHolder {

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
            ImageView imageView = holder.imageView;
            Glide.with(imageView.getContext())
                    .load(tweetMapArray.get(listPosition).get("imageURL").toString())
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .crossFade()
                    .into(imageView);
    // imageURL is a valid URL for each item
    }

    @Override
    public void onViewDetachedFromWindow(MyViewHolder holder) {
        super.onViewDetachedFromWindow(holder);
        Glide.clear(holder.imageView);
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我做错了什么.我之前没有使用过如此多的图像.

android out-of-memory android-recyclerview android-glide

3
推荐指数
1
解决办法
5808
查看次数