какая польза от layoutinflator? - PullRequest
8 голосов
/ 22 февраля 2011

Я новый разработчик Android.Я пытался понять использование инфлятора Layout из документации, но не смог понять.Какая польза от инфлятора макета в Android?

В каких ситуациях его нужно использовать?

Ответы [ 2 ]

17 голосов
/ 22 февраля 2011

Дополнительные технические пояснения

См. this

Переписано для простоты

По сути, ваши плоские XML-файлы представляют собой воздушный шарик без воздухаи то, что делает LayoutInflator, это раздувает (или раздувает) в полноразмерный шарик, также называемый вашими представлениями или группами просмотра.Таким образом, плоский файл раздувается в поле зрения.(не стесняйтесь критиковать метафору, но, так или иначе, я так думаю об этом) и что касается использования, проверьте эту статью .Автор говорит об инфляции объектов вручную.

Несколько упрощенное объяснение того, как это реализовано.

Внутренний анализатор xml, который сопоставляется с кэшированным подмножеством Android.Resource.ищет соответствующий XML, который распознается как представление, создает их экземпляры и добавляет их в группу представления.

Где искать

Из этого внутреннего rInflate в LayoutInflator анализирует XML-файл и добавляет результат в родительское представление.Ищите перегрузку с определенной подписью

void rInflate(XmlPullParser parser, View parent, final AttributeSet attrs, boolean finishInflate)

Дополнительные примечания

В комментариях LayoutInflater

Для производительности* Причины, инфляция представления сильно зависит от предварительной обработки файлов XML *, которая выполняется во время сборки.Таким образом, в настоящее время невозможно * использовать LayoutInflater с XmlPullParser над простым XML-файлом во время выполнения.

Таким образом, мы можем сделать вывод, что xml из файла кэшируется во время компиляции для вырезанияобъем обработки, необходимый для обработки файла.

  • Подробное представление о том, как извлекаются кэшированные данные, см. XmlResourceParser loadXmlResourceParser(String file, int id, int assetCookie, String type) в файле Resources.java . * 1042.*
  • Информацию об источнике Layout Inflator см. В LayoutInflater.java
  • Сведения о способах просмотра исходного кода Android OS см. В этом вопросе

Надеюсьэто проясняет ситуацию немного больше.

2 голосов
/ 11 сентября 2013

Layout Inflator в Android является очень важной частью Android


                           _ _ _ _ _ _ _ _ _ _ _ _
                          |                       |
                          |       _____________   |            
                          | Name |_____________|--|-----<2 objects(TextView,EditText)> 
                          |       _____________   |            
                          | Age  |_____________|--|-----<2 objects(TextView,EditText)> 
                          |       _____________   |             
                          | Phone|_____________|--|-----<2 objects(TextView,EditText)> 
                          |                       |
                          |                       |
                          |                       |
                          |                       |
                          |        ------         |         
                          |       |BUTTON| -------|-----<1 objects(ButtonView)>      
                          |        ------         |
                          |                       |
                           -----------------------                           

We can clearly see from the above figure,

  • Элементы пользовательского интерфейса в активности отображаются за деятельностью, которая не видна для пользователя. Сложные действия выполняются системой Android

What are these complex actions ?

  • Простой способ, которым мы можем описать, состоит в том, что объекты создаются для каждого представления, существующего в XML-файле Android, а instantiation - этосделано здесь.
  • С помощью Inflator service создание этого объекта и этот процесс называется layout Inflation
...