Дополнительные технические пояснения
См. 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 см. В этом вопросе
Надеюсьэто проясняет ситуацию немного больше.