setContentView() 、LayoutInflater的区别
2013-03-30 13:40
351 查看
1、setContentView() 、LayoutInflater二者通常在用法上的区别:
setContentView的用法
setContentView(int layoutResID)eg , setContentView(R.layout.main) 这个事初学的时候通常在onCreate方法里用到
setContentView(View view) //就是放一个view对象的参数
setContentView(View view, ViewGroup.LayoutParams params) //这种暂时还没有试过
LayoutInflater用法
LayoutInflater inflater = getLayoutInflater()//调用activity的getLayoutInflater()方法获得一个LayoutInflater
LayoutInflater localinflater = getSystemService(String nameater = getSystemService(String name) //也是调用activity中的getSystemService方法,所用的参数也是内置的,可根据需要选择 eg , getSystemService(Context.Layout_INFLATER_SERVICE);
LayoutInflater inflater = LayoutInflater.from(context); //eg , LayoutInflater.from(this);
注:这三种获得LayoutInflater 的方式,本质其实是相同的,从源码中能够看出它们都是调用getSystemService()方法。
2、setContentView() 、LayoutInflater二者在Activity中使用的状态:
初学Android的时候,大家都知道我们在emulater上运行我们的android应用时就会有一个界面显示在模拟器上,而这里面就是我们在继承的Activity类中,重写的一个onCreate方法里使用了setContentView方法,把layout文件夹里面的布局文件(xml文件)设置进去,这样,我们在模拟器上就可以看到我们自己定义的andriod ui.
这里要详细介绍一下LayoutInflater:我们用LayoutInflater一般都是想要把一个没有被载入,或者想要动态载入的界面显示出来,在一个继承Activity基类的class中可以通过setContentView将界面显示出来,但在非继承于Activity的类中就需要LayoutInflater来Inflater了。所谓被载入和没有被载入区别在于,比如,当我们启动一个应用时,与入口Activity相关的layout就是被载入(启动应用时第一个显示在屏幕上的界面,通常就是main.xml);而其他的layout则是没有被载入的,这时就要动态载入或通过跳转到另一个activity.使用LayoutInflater可以得到项目中
layout文件夹下的某个xml布局文件,然后将该文件转化为View类型,有需要时再用setContentView(view)显示出来(一直不是很明白这样再显示出来有什么意义???). LayoutInflater可以与findViewById相比,只不过findViewById得到的是xml布局文件中某个具体的widget控件,如TextView/EditText/Button.....等一些界面元素
个人理解:如果我们的activity类不继承Activity基类,则就要通过LayoutInflater来加载界面;而如果activity类继承了Activity类,这时既可以用setContentView()来显示界面,也可以用Inflater加载界面。
setContentView的用法
setContentView(int layoutResID)eg , setContentView(R.layout.main) 这个事初学的时候通常在onCreate方法里用到
setContentView(View view) //就是放一个view对象的参数
setContentView(View view, ViewGroup.LayoutParams params) //这种暂时还没有试过
LayoutInflater用法
LayoutInflater inflater = getLayoutInflater()//调用activity的getLayoutInflater()方法获得一个LayoutInflater
LayoutInflater localinflater = getSystemService(String nameater = getSystemService(String name) //也是调用activity中的getSystemService方法,所用的参数也是内置的,可根据需要选择 eg , getSystemService(Context.Layout_INFLATER_SERVICE);
LayoutInflater inflater = LayoutInflater.from(context); //eg , LayoutInflater.from(this);
注:这三种获得LayoutInflater 的方式,本质其实是相同的,从源码中能够看出它们都是调用getSystemService()方法。
2、setContentView() 、LayoutInflater二者在Activity中使用的状态:
初学Android的时候,大家都知道我们在emulater上运行我们的android应用时就会有一个界面显示在模拟器上,而这里面就是我们在继承的Activity类中,重写的一个onCreate方法里使用了setContentView方法,把layout文件夹里面的布局文件(xml文件)设置进去,这样,我们在模拟器上就可以看到我们自己定义的andriod ui.
这里要详细介绍一下LayoutInflater:我们用LayoutInflater一般都是想要把一个没有被载入,或者想要动态载入的界面显示出来,在一个继承Activity基类的class中可以通过setContentView将界面显示出来,但在非继承于Activity的类中就需要LayoutInflater来Inflater了。所谓被载入和没有被载入区别在于,比如,当我们启动一个应用时,与入口Activity相关的layout就是被载入(启动应用时第一个显示在屏幕上的界面,通常就是main.xml);而其他的layout则是没有被载入的,这时就要动态载入或通过跳转到另一个activity.使用LayoutInflater可以得到项目中
layout文件夹下的某个xml布局文件,然后将该文件转化为View类型,有需要时再用setContentView(view)显示出来(一直不是很明白这样再显示出来有什么意义???). LayoutInflater可以与findViewById相比,只不过findViewById得到的是xml布局文件中某个具体的widget控件,如TextView/EditText/Button.....等一些界面元素
个人理解:如果我们的activity类不继承Activity基类,则就要通过LayoutInflater来加载界面;而如果activity类继承了Activity类,这时既可以用setContentView()来显示界面,也可以用Inflater加载界面。
相关文章推荐
- Android中setContentView、addContentView、inflate、LayoutInflater和findViewById()区别
- setContentView()与LayoutInflater.from()的区别-android
- setContentView() 、LayoutInflater的区别
- android setContentView() 、LayoutInflater的区别
- [Android] setContentView和inflater区别以及findViewById和inflater的区别
- android开发中使用setContentView和LayoutInflater的点点滴滴
- Android之setContentView和LayoutInflater
- Android之setContentView和LayoutInflater
- 深入理解View知识系列一- setContentView和LayoutInflater源码原理分析
- Android] setContentView和inflater区别以及findViewById和inflater的区别
- 2016 Android setContentView LayoutInflater 加载 原理
- Android UI 详解之LayoutInflater和setContentView
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- Android setContentView与LayoutInflater加载解析机制源码分析
- setContentView+LayoutInflater=完美切换页面(两者一定要同时使用,setContentView提高切换页面速度必看)setContentView的秘密----续上
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- Android应用setContentView与LayoutInflater加载解析机制源码分析(转载)
- SetContentView与LayoutInflater源码分析
- Android之setContentView和LayoutInflater
- setContentView和LayoutInflater相关总结