Почему моя таблица поддержки с изображениями работает так медленно (всего 5 изображений)?

#android #xml #android-layout

#Android #xml #android-макет

Вопрос:

В настоящее время я работаю над приложением, в котором мне нужно иметь от 5 до 6 кнопок «главного меню». Эти кнопки я создаю с линейным макетом, который содержит фоновый xml, чтобы у кнопки была граница. И внутри этого линейного макета есть ImageView и TextView.

Это означает, что в настоящее время у меня есть 5 подобных линейных описаний в android.support.v7.widget.Элемент сетки. Затем это отображается в режиме прокрутки, потому что оно должно быть прокручиваемым, когда оно переполняет экран.

Он красиво отображается на экране так, как я хочу, но на данный момент это просто способ замедления. Прокрутка выполняется недопустимо медленно, а клики реагируют очень медленно.

Я уже пытался удалить onclick, чтобы посмотреть, изменится ли что-нибудь, но я думаю, что это в основном где-то в xml.

Код здесь:

 <?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:id="@ id/layout_tab_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/backgroundColor"
    android:orientation="vertical">

    <android.support.v7.widget.GridLayout
        android:id="@ id/gridlayout_home"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:columnCount="2"
        app:useDefaultMargins="true">

        <LinearLayout
            android:id="@ id/relative_home_button_1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            app:layout_columnWeight="1">

            <ImageView
                android:id="@ id/imageview_home_icon1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="8dp"
                android:scaleType="fitStart"
                android:src="@drawable/icon_installationhelp"
                />
            <TextView
                android:id="@ id/textview_home_item_title1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/title_activity_installatiehulp" />
        </LinearLayout>

        <LinearLayout
            android:id="@ id/relative_home_button_2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            app:layout_columnWeight="1">

            <ImageView
                android:id="@ id/imageview_home_icon2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="8dp"
                android:scaleType="fitStart"
                android:src="@drawable/icon_productfinder"
                tools:background="@color/buttonFontColor" />

            <TextView
                android:id="@ id/textview_home_item_title2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/title_activity_producten" />
        </LinearLayout>

        <LinearLayout
            android:id="@ id/relative_home_button_3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            app:layout_columnWeight="1">

            <ImageView
                android:id="@ id/imageview_home_icon3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="8dp"
                android:scaleType="fitStart"
                android:src="@drawable/icon_materials"
                tools:background="@color/buttonFontColor" />

            <TextView
                android:id="@ id/textview_home_item_title3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/title_activity_materialen" />
        </LinearLayout>

        <LinearLayout
            android:id="@ id/relative_home_button_4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            app:layout_columnWeight="1">

            <ImageView
                android:id="@ id/imageview_home_icon4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="8dp"
                android:scaleType="fitStart"
                android:src="@drawable/icon_dealers"
                tools:background="@color/buttonFontColor" />

            <TextView
                android:id="@ id/textview_home_item_title4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/title_activity_verkooppunten" />
        </LinearLayout>

        <LinearLayout
            android:id="@ id/relative_home_button_5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            app:layout_columnWeight="1">

            <ImageView
                android:id="@ id/imageview_home_icon5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:padding="8dp"
                android:scaleType="fitStart"
                android:src="@drawable/icon_contact"
                tools:background="@color/buttonFontColor" />

            <TextView
                android:id="@ id/textview_home_item_title5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="8dp"
                android:layout_marginTop="8dp"
                android:text="@string/text_title_contact" />
        </LinearLayout>
    </android.support.v7.widget.GridLayout>
</ScrollView>
  

Пример изображения: пример значка

Комментарии:

1. Не могли бы вы приложить пример одного из изображений?

2. @Knossos Я думаю, что допустил ошибку в том, куда я поместил ресурс изображения. Я думаю, что перемещение чертежа из папки / drawable в папку / drawable-xxhdpi устранило проблему. Все еще довольно случайное решение, но я на самом деле не работаю с фиксированным размером изображения, поэтому я не сделал логический шаг по изменению размера изображения для каждой плотности. первый.

3. Таким образом, размер изображения был просто гигантским, что приводило к задержке экрана?

4. 5 .изображения в формате png размером 1000×1000 с исходным размером не более 48 КБ. Мне это не показалось слишком сложным для обработки, и буквально все, что я сделал, это переместил их в папку / drawable-xxhdpi. Итак, я предполагаю, что Android автоматически масштабирует изображения для xhdpi и тому подобное?

5. Да, я могу представить, что это фактор. Рад, что вы решили это!

Ответ №1:

Вы пытались использовать RecyclerView с Layout manager?

 recyclerView.setLayoutManager(new GridLayoutManager(context, columnsCount));
  

Комментарии:

1. Нет, у меня нет. Но разве это не просто переработало бы представления? На данный момент все кнопки отображаются на экране, и я не думаю, что это проблема утилизации, поскольку все 5 уже отображаются на экране, но пятая только половина.

Ответ №2:

Для тех, кто натыкается на этот вопрос.

Я решил это, переместив мои изображения из / drawable в / drawable-xxhdpi Мои изображения, где с высоким разрешением для плотности экрана.

Это не полностью объясняет, почему, но это может направить вас в правильном направлении.