Intereting Posts
Обновление viewpager с фрагментами в новом порядке Как создать подсказку EditText как текст с изображением в android Gradle не удалось синхронизировать с «неспособным найти дополнительную библиотеку», Как изменить заголовок разделителя заголовка диалогового окна Как скрыть время, полученное от ответа, с сервера в андроиде, не показывая черный экран? Как скрыть нижнюю системную панель в Android-планшете Как получить и изменить содержимое HTML из WebView с помощью Http Post ACCESS_NETWORK_STATE permisson на Android ICS Поделиться Twitter и Facebook на Android и iPhone с помощью Phonegap 2.0.0 Проект библиотеки Android с React Native Как очистить фокус от всех выбираемых элементов в представлении? Увеличьте скорость разработки Android Приложение не указано в программе запуска из-за <data android: schem = "http" /> в AndroidManifest.xml Android – глобальный приемник макета не работает Android-браузер: программно изменять сфокусированное входное значение

Повысить производительность приложения с более чем 80 просмотров на макет

Я создаю приложение для Android, у которого есть конкретный экран (макет) с более чем (120 + просмотров), который генерирует предупреждение:

"main.xml has more than 80 views, bad for performance" 

У меня много TextViews , EditTexts , групп RadioButtons организованных на 26 TableRows .

Есть ли что-то, что я могу сделать для повышения производительности приложений и устранения предупреждения?

Источник: main.xml_capture

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout00" android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:orientation="vertical" > <TableRow android:id="@+id/tableRow00" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="right|top" android:gravity="right" > <Button android:id="@+id/id_but_val" android:layout_width="@dimen/button_width" android:layout_height="wrap_content" android:background="@drawable/button_colored" android:text="@string/but_valid" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/id_but_up" android:layout_width="@dimen/button_width" android:layout_height="wrap_content" android:background="@drawable/button_colored" android:onClick="goToTop" android:text="@string/but_ret_up" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/id_but_back" android:layout_width="@dimen/button_width" android:layout_height="wrap_content" android:background="@drawable/button_colored" android:text="@string/but_ret_back" android:textAppearance="?android:attr/textAppearanceMedium" /> </TableRow> <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:isScrollContainer="true" android:overScrollMode="always" android:scrollbarAlwaysDrawVerticalTrack="true" android:scrollbarStyle="outsideInset" > <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:orientation="vertical" > <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView01" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_84_obstacles_acces" /> <RadioGroup android:id="@+id/RadioGroup01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:orientation="horizontal" > <RadioButton android:id="@+id/RadioButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_oui" /> <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_non" /> </RadioGroup> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView02" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_85_limit_tonnage" /> <EditText android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:ems="@string/editTextEms" android:inputType="numberDecimal" /> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" android:visibility="gone" > <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_86_derog" /> </TableRow> <TableRow android:id="@+id/TableRow04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView04" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_87_limit_hauteur" /> <EditText android:id="@+id/EditText03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:ems="@string/editTextEms" android:inputType="numberDecimal" /> </TableRow> <TableRow android:id="@+id/TableRow05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView05" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_88_limit_largeur" /> <EditText android:id="@+id/EditText04" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:ems="@string/editTextEms" android:inputType="numberDecimal" /> </TableRow> <TableRow android:id="@+id/TableRow06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView06" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_89_trav_jour" /> <RadioGroup android:id="@+id/RadioGroup06" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:orientation="horizontal" > <RadioButton android:id="@+id/RadioButton11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_oui" /> <RadioButton android:id="@+id/RadioButton12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_non" /> </RadioGroup> </TableRow> <TableRow android:id="@+id/TableRow07" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView07" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_90_acces_intemperies" /> <RadioGroup android:id="@+id/RadioGroup07" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:orientation="horizontal" > <RadioButton android:id="@+id/RadioButton13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_oui" /> <RadioButton android:id="@+id/RadioButton14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_non" /> </RadioGroup> </TableRow> <TableRow android:id="@+id/TableRow08" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView08" android:layout_width="@dimen/label_width" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_91_acces_de_client" /> <RadioGroup android:id="@+id/RadioGroup08" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:orientation="horizontal" > <RadioButton android:id="@+id/RadioButton15" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_oui" /> <RadioButton android:id="@+id/RadioButton16" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_non" /> </RadioGroup> </TableRow> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TableRow android:id="@+id/TableRow09" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView09" android:layout_width="@dimen/label_width" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_92_contraintes_reservoir" /> <EditText android:id="@+id/EditText05" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:ems="@string/editTextEms" android:inputType="text" /> </TableRow> <TableRow android:id="@+id/TableRow10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/row_margin_top" > <TextView android:id="@+id/TextView10" android:layout_width="@dimen/label_width" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/view_left_margin" android:text="@string/ecran3_93_dalle_pret" /> <RadioGroup android:id="@+id/RadioGroup10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/view_left_margin" android:orientation="horizontal" > <RadioButton android:id="@+id/RadioButton19" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_oui" /> <RadioButton android:id="@+id/RadioButton20" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_value_non" /> </RadioGroup> </TableRow> <!-- TableRow10 to TableRow26 --> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout> 

Не увидев полный макет, я бы сказал, чтобы заменить TableLayout на ListView . Я предполагаю, что у вас есть количество Views для каждой строки, если вы переключитесь на ListView вы избежите необходимости загружать весь макет в память, вместо этого вы загружаете только видимые строки на экране ListView + Любые ваши взгляды, кроме вас.

С помощью вышеуказанного подхода вы сможете удалить значительное количество строк из текущего макета.

РЕДАКТИРОВАТЬ :

На основе вашего дополнительного макета некоторые советы:

  • TableRow может использоваться как обычный вид в макете, но его главная цель – быть дочерним элементом TableLayout .
  • Если вы не хотите, чтобы ваши Buttons из tableRow00 имели равную ширину, вы можете сделать небольшое улучшение и вместо текущего макета заменить LinearLayout00 на RelativeLayout , удалить tableRow00 а затем поместить Buttons и ScrollView используя правила RelativeLayout ,
  • Замените LinearLayout01 на TableLayout .
  • Я не знаю, почему вы добавили LinearLayout02 (я предполагаю, что все ваши строки одинаковы ?!), но вы должны удалить его и напрямую добавить TableRow09TableRow26 в LinearLayout01 .
  • Остальная часть моего ответа остается.