2017-01-19 16 views
-1

私はアンドロイドのスクロールのパフォーマンスに問題があります。 ScrollViewにはimagebuttonsを持つ多くのLinearLayoutsが含まれています。画像の重さは50KB未満です。どうすれば解決できますか?Androidの不十分なスクロールのパフォーマンス

アクティビティレイアウト:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".categories.AllSoundsActivity" 
android:orientation="vertical" 
android:background="@drawable/main_menu" 
android:layout_alignParentEnd="false" 
app:layout_scrollFlags="scroll" 
android:clipToPadding="false" 
android:clipChildren="false" 
android:clickable="false" 
android:layout_alignParentBottom="false" 
android:layout_alignParentTop="false" 
android:layout_alignWithParentIfMissing="false" 
android:layout_centerVertical="false" 
android:soundEffectsEnabled="true" 
android:verticalScrollbarPosition="right" 
android:visibility="visible" 
android:layout_alignParentLeft="false" 
android:layout_alignParentRight="false" 
android:layout_alignParentStart="false" 
android:fadeScrollbars="true" 
android:baselineAligned="false" 
android:addStatesFromChildren="false"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true"> 

    <!-- This is the 'faux' ToolBar I've been telling you about. This is the part that will be overlaid by the content view below. --> 

    <FrameLayout 
     android:id="@+id/v_toolbar_extension" 
     android:layout_width="match_parent" 
     android:layout_height="78dp" 
     android:layout_below="@+id/tb_toolbar" 
     android:elevation="0dp"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_gravity="top" 
      android:layout_height="match_parent" 
      android:minHeight="0dp" 
      android:gravity="right" 
      android:background="@drawable/toolbar_image"> 


      <ImageButton 
       android:src="@drawable/buton_favourite_image" 
       android:layout_width="55dp" 
       android:layout_height="53dp" 
       android:layout_gravity="right" 
       android:layout_marginRight="8dp" 
       android:background="?selectableItemBackground" 
       android:id="@+id/favouriteButton" 
       android:scaleType="centerInside" 
       android:elevation="24dp" 
       android:visibility="visible" /> 

      <ImageButton 
       android:src="@drawable/main_menu_icon_image" 
       android:layout_width="51dp" 
       android:layout_height="61dp" 
       android:layout_gravity="right" 
       android:layout_marginRight="8dp" 
       android:background="?selectableItemBackground" 
       android:id="@+id/mainMenuButton" 
       android:scaleType="centerInside" 
       android:elevation="24dp" 
       android:visibility="visible" /> 


     </android.support.v7.widget.Toolbar> 
    </FrameLayout> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/scrollview"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:drawingCacheQuality="auto" 
       android:alwaysDrawnWithCache="true" 
       android:persistentDrawingCache="all"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button2" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button2" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button2" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button3" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button3" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button3" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button4" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button4" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button4" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button5" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button5" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button5" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button6" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button6" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button6" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button7" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button7" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button7" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button8" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button8" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button8" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clipChildren="false" 
       android:clipToPadding="false" 
       android:contextClickable="false" 
       android:gravity="center" 
       android:weightSum="1"> 

       <ImageButton 
        android:src="@drawable/share_button" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/share_button9" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="8dp" 
        android:layout_weight="0.18"/> 

       <ImageButton 
        android:src="@drawable/example_sound" 
        android:layout_width="276dp" 
        android:layout_height="130dp" 
        android:background="?selectableItemBackground" 
        android:id="@+id/all_sounds_button9" 
        android:scaleType="centerInside" 
        android:cropToPadding="false" 
        android:layout_weight="0.44" /> 

       <ImageButton 
        android:src="@drawable/unliked" 
        android:layout_width="48dp" 
        android:layout_height="match_parent" 
        android:layout_gravity="right" 
        android:background="?selectableItemBackground" 
        android:id="@+id/unliked_button9" 
        android:scaleType="centerInside" 
        android:visibility="visible" 
        android:layout_marginRight="30dp" 
        android:layout_marginLeft="8dp" 
        android:layout_weight="0.18" /> 

      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

+1

私はそれが何らかの形であなたのレイアウトに関係しているとは思わない。ビジー状態のUIスレッドの可能性が高いあなたのコードを表示してください。 – Divers

+0

AndroidStudioで新たに生成されたアクティビティのように、アクティビティのコードが完全にデフォルトになっています。デフォルト以外のコードはありません。 – siemaeniu500

答えて

3

問題が何度も描画させている多くの入れ子になったLinearLayoutsあります。 Android用の階層ビューアを使用して見てみると、私は何を意味するのか分かります。

私がお勧めするのは、ScrollViewを廃止してListViewに置き換えることです。こうすることで、AndroidはImageButtonでLinearLayoutを再利用できるようになり、毎回再描画する必要がなくなり、スクロールがスムーズになります。

+0

私はrecyclerViewsを勧めましたが、それはパフォーマンス面ではより良いです...しかし、表示されたビューが本当に同じレイアウトを膨らませるアイテムのリストではない場合はどうなりますか?アダプターのいくつかのトリックは、recyclerViewを膨らませるのに役立ちますが、パフォーマンスのマジックを行うリサイクル機能はありません。 – AnixPasBesoin

+0

しかし、私はrecyclerViewsにimagebuttonsを追加できますか? – siemaeniu500

+0

@AnixPasBesoinのように、私はRecyclerViewを使用することに同意しますが、私はそれについて言及していませんでした。また、はいImageButtonsはRecyclerViewsで使用できます。 – Jraco11

関連する問題