我有一个包含背景图像视图和回收者视图的应用程序。当我将fitxy缩放到背景图像回收器视图时,滚动速度会变慢。当我删除bg图像比例滚动性能很快。但是我无法在没有比例缩放xy的情况下使用图像视图,因为即使我的图像尺寸与屏幕尺寸图像相同,也无法填充整个屏幕。我的图像存储在设备中。我将图像读取为位图,并设置了图像组件位图。
编辑:我忘记了一个要点,即Android 5或5+版本的性能要优于Android4。但是Android 5仅仅比4回收器视图滚动效果还差。
我尝试使用Glide将图像加载到imageview,但是结果性能仍然很慢。图片加载代码为:
File f = new File(Constants.SETTINGS_MEDIA_LOCAL_FOLDER,
ApplicationManager.ShopSet.getMenuPageBackImage());
Glide.with(ProductListActivity.this).load(Constants.FOLDERS_PREFIX +
f.getPath()).into(iv`enter code here`CategoryBg);
我的布局xml是:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivProductListBg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/llCategoryHeader"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_weight=".5"
android:orientation="vertical">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/llBackButtonProductList"
android:layout_width="130dp"
android:layout_height="56dp"
android:layout_alignParentLeft="true"
android:layout_marginTop="30dp"
android:clickable="true"
android:orientation="horizontal">
<TextView
android:id="@+id/tvBackButtonProductList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="2"
android:padding="5dp"
android:text="Back"
android:textAlignment="center"
android:textColor="@color/colorWhite"
android:textSize="24dp" />
</LinearLayout>
<LinearLayout
android:layout_width="280dp"
android:layout_height="120dp"
android:layout_centerInParent="true"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivProductListLogo"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/llCartButtonProductList"
android:layout_width="130dp"
android:layout_height="56dp"
android:layout_alignParentRight="true"
android:layout_marginTop="30dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tvCartButtonProductList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="2"
android:padding="5dp"
android:text="0,00"
android:textAlignment="center"
android:textColor="@color/colorWhite"
android:textSize="24dp" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/llProductListHeader"
android:layout_weight=".25"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5">
<TextView
android:id="@+id/tvProductListCategoryName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="25dp"
android:text="METE"
android:textColor="@color/black"
android:textSize="28dp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/llProductListViewChoose"
android:layout_width="150dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_gravity="bottom"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:background="@drawable/border"
android:orientation="horizontal"
android:visibility="invisible">
<LinearLayout
android:id="@+id/llProductListSingleViewChoose"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/ivProductListSingleView"
android:layout_width="46dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:scaleType="center"
android:src="@drawable/singleviewbutton" />
</LinearLayout>
<LinearLayout
android:id="@+id/llProductListDoubleViewChoose"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/ivProductListDoubleView"
android:layout_width="46dp"
android:layout_height="28dp"
android:layout_gravity="center"
android:scaleType="centerInside"
android:src="@drawable/doubleviewbutton" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/llProductListHeader2"
android:layout_weight=".25"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3">
<TextView
android:id="@+id/tvProductListCategoryInfo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="25dp"
android:text="METE"
android:textColor="@color/black"
android:textSize="21dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_below="@+id/llProductListHeader2"
android:layout_weight=".30"
android:orientation="vertical">
<LinearLayout
android:layout_width="150dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:visibility="invisible">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/img_LanguageProductList"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="5dp"
android:scaleType="fitXY"
android:src="@drawable/language" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@+id/llCategoryList"
android:layout_weight="4"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerviewProductList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
</android.support.v7.widget.RecyclerView>
<ListView
android:id="@+id/listviewProductList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:scrollingCache="false"></ListView>
</LinearLayout>
</LinearLayout>
ivProductListBg是我的bg图像视图。使用相同的代码,如果我删除ivProductListBg android:scaleType =“ fitXY”属性,一切正常,但是当我添加android:scaleType =“ fitXY”属性时,recyclerview滚动速度变慢。
答案 0 :(得分:0)
我猜这可能与您使用的图像大小有关。确保它不是很重的文件。
您可以尝试对其进行压缩或调整大小。
答案 1 :(得分:0)
检查以下Android documentation
有几个遵循最佳实践的库来加载图像。您可以在应用中使用这些库以最优化的方式加载图像。我们建议使用Glide库,该库将尽可能快且平稳地加载和显示图像。其他流行的图像加载库包括Square的Picasso和Facebook的Fresco。这些库简化了与Android上的位图和其他类型的图像相关的大多数复杂任务。