在安卓开发中,经常要将一个xml布局文件inflate成一个view对象,用到的方法通常是三种:
(1)View.inflate(Context context, int resource, ViewGroup root);
(2)LayoutInflater.from(context).inflate(int resource, ViewGroup root);
(3)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
那么这三种inflate之间有什么区别和联系呢?
通过源码其实很容易知道这三种之间有什么关联,其实很简单,View.inflate内部调用LayoutInflater.from(context).inflate,然后LayoutInflate内部调用getSystemService(Context.LAYOUT_INFLATER_SERVICE)得到LayoutInflater实例,说到底最终都是拿到系统的inflater.
view的inflate方法
public static View inflate(Context context, int resource, ViewGroup root) {
LayoutInflater factory = LayoutInflater.from(context);
return factory.inflate(resource, root);
}
LayoutInflater的inflate方法
public View inflate(int resource, ViewGroup root) {