i'm developping app xamarin.android , can't rid of performance issue recyclerview.
here's problem: have recyclerview displaying cardviews, 4. each cardview contains image tried keep pretty light (65ko) in imageview. images loaded drawable res folder @ jpg format.
the scroll damn laggy ! tried optimize cardview's layout best could, , runs without imageviews.
how make smooth images ?
here's recyclerview:
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <imageview android:layout_width="match_parent" android:layout_height="match_parent" android:scaletype="centercrop" android:src="@drawable/background" /> <linearlayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" local:mvxbind="visibility invertedvisibility(iserror)"> <mvvmcross.droid.support.v7.recyclerview.mvxrecyclerview android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margintop="56dp" android:layout_marginbottom="8dp" android:cliptopadding="false" local:mvxbind="itemssource benchmarkwods; itemclick wodselectedcommand" local:mvxitemtemplate="@layout/listitem_benchmarkwod"/> </linearlayout> </framelayout>
and cardview template:
<android.support.v7.widget.cardview xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:local="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardelevation="4dp" android:translationz="4dp" card_view:cardcornerradius="2dp" card_view:cardpreventcorneroverlap="true" android:layout_margintop="8dp" android:layout_marginleft="8dp" android:layout_marginright="8dp" card_view:cardbackgroundcolor="#ffffff"> <linearlayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <framelayout android:layout_width="match_parent" android:layout_height="140dp"> <imageview android:layout_width="300dp" android:layout_height="140dp" android:scaletype="centercrop" android:src="@drawable/stock1_small" /> <view android:layout_width="match_parent" android:layout_height="140dp" android:background="#80000000" /> <relativelayout android:layout_width="match_parent" android:layout_height="140dp" android:padding="8dp"> <textview android:id="@+id/wod_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="some text" android:textcolor="#ffffff" android:layout_alignparenttop="true" android:layout_alignparentleft="true" /> <textview android:id="@+id/wod_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="some text" android:textcolor="#ffffff" android:textsize="14sp" android:textstyle="bold" android:layout_alignparenttop="true" android:layout_centerhorizontal="true"/> <textview android:id="@+id/wod_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="some text" android:textcolor="#ffffff" android:textsize="24sp" android:textstyle="bold" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" local:mvxbind="text name"/> </relativelayout> </framelayout> <relativelayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#4cd964" android:paddingleft="8dp" android:paddingright="8dp" android:paddingtop="4dp" android:paddingbottom="4dp"> <textview android:id="@+id/wod_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="some text" android:textallcaps="true" android:textcolor="#ffffff" android:textsize="16sp" android:textstyle="bold" android:layout_alignparentleft="true" local:mvxbind="text type" /> <imageview android:id="@+id/wod_type_icon" android:layout_width="24dp" android:layout_height="24dp" android:layout_alignparentright="true" android:src="@drawable/ic_person_white_24dp" /> </relativelayout> <textview android:id="@+id/wod_goal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingtop="8dp" android:paddingleft="8dp" android:text="some text" android:textallcaps="true" android:textcolor="#000000" android:textsize="18sp" android:textstyle="bold" local:mvxbind="text metcontype" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:textcolor="#000000" android:textsize="16sp" android:singleline="false" android:text="some text" /> </linearlayout> </android.support.v7.widget.cardview>
as can see, tried put fixed widths , heights in order prevent processing device.
also, i've got bonus question you: cardview elevation not working @ all. after browsing whole web solution. if find what's going on, you're superhero !
edit: (solved) problems because of gpu acceleration wasn't turned on app.
it caused scroll lag, elevation issue , gpu overdraw disfunction.
maybe problem "overdraw backgrounds", please enable "show overdraw areas" in "developer options" , check amount of overdraw on screen.
Comments
Post a Comment