setContentView() 、LayoutInflater的区别
2015-06-03 16:54
302 查看
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加载界面。
相关文章推荐
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)
- 团队站立会议8(第二阶段)
- MJExtention
- How-to: enable hbase thrift support
- LeetCode Word Search(DFS)
- QP01 BAPI、QP02 BDC
- jUnit 的使用
- STL系列之十 全排列(百度迅雷笔试题)
- Android Lollipop 5.0 获取后台运行的APP包名
- Git工具的使用
- java中基本类型占用字节数 (面试总问)
- linux md5sum 的用法
- iOS手动实现缓存机制(以FMDB实现)
- Reports Never Stop Loading With VS 2010
- qt字体设置
- UITableView默认选中第一个cell
- 类适配器与对象适配器的区别
- (转)什么是高频交易?
- 桌面虚拟化
- shell脚本抓取问题进程(守护进程)