`

认识 android 中的 LayoutInflater

 
阅读更多

Inflater英文意思是膨胀,在Android中应该是扩展的意思吧。 
LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

 

她可以有很多地方可以使用,如BaseAdapter的getView中,自定义Dialog中取得view中的组件widget等等。
它的用法有2种:

 

Java代码
  1. view plaincopy to clipboardprint?  
  2. LayoutInflater inflater = LayoutInflater.from(this);     
  3. View view=inflater.inflate(R.layout.ID, null);    
  4. 或者干脆并成一句:    
  5. View view=LayoutInflater.from(this).inflate(R.layout.ID, null);    


 

另一种方法: 

Java代码
  1. view plaincopy to clipboardprint?  
  2. LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);    
  3. View view=inflater.inflate(R.layout.ID, null);   

上面2种方法本质上是一样的,看下面的源码,form()调用的就是getSystemService(): 

Java代码
  1. Java代码  
  2. public static LayoutInflater from(Context context) {       
  3.     LayoutInflater LayoutInflater =       
  4.             (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       
  5.     if (LayoutInflater == null) {       
  6.         throw new AssertionError("LayoutInflater not found.");       
  7.     }       
  8.     return LayoutInflater;       
  9. }   

另外getSystemService()是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。 

传入的Name 返回的对象 说明
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICE PowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VEBRATOR_SERVICE Vebrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务


 

分享到:
评论

相关推荐

    老罗Android之旅-授课PPT

    老罗的PPT可能详细解析了这些层次的功能和相互关系,让你对Android系统有一个全面的认识。 Android应用程序主要使用Java语言编写,但也支持Kotlin等现代语言。PPT中可能会介绍如何搭建开发环境,包括安装Android ...

    android fragment超简单使用demo

    在Android应用开发中,Fragment是Android SDK提供的一种组件,它允许开发者...通过学习这个示例,开发者可以对Fragment有一个初步的认识,并能够将Fragment集成到自己的Android应用中,实现更加复杂和动态的用户界面。

    android 基本组件 画廊 按钮 布局

    例如,你可以使用LayoutInflater类来从XML布局文件中加载组件,然后使用addView方法将其添加到父布局中。同时,通过findViewById方法可以获取已定义的组件实例,以便对其进行操作。 总之,Android的基本组件是构建...

    Android开发从入门到精通(随书光盘)【源码】第2章

    9. **XML布局动态加载**:通过LayoutInflater将XML布局动态地加载到运行时的视图层次结构中,是实现界面动态生成的关键。 10. **生命周期管理**:Activity有明确的生命周期,包括onCreate(), onStart(), onResume()...

    RecycleView 的进一步认识(文件列表)

    在`onCreateViewHolder`中,你可以通过`LayoutInflater.from(context).inflate(R.layout.item_file, parent, false)`来创建一个新的视图并返回一个ViewHolder实例。 文件列表的每个项通常包含文件名、类型图标、...

    MyTestFloatApplication.zip

    《Android音乐播放器悬浮窗实现详解》 在移动设备上,音乐...通过本文的讲解,希望你对Android音乐播放器悬浮窗的实现有了深入的认识。不断探索和实践,才能在这个充满无限可能的平台中创造出更多精彩的用户体验。

    Android源码解析

    - 该项目通过分析Android系统中的设计模式来帮助开发者深入理解模式的应用场景。 - **目标**:增强开发者对设计模式的认识并提升编码质量。 - **simple-android-opensource-framework** - 该项目提供了对一些知名...

    ListView总结

    在这个方法中,你可以通过LayoutInflater实例化Item布局,然后根据数据填充各个控件。 4. **监听器**:通过设置OnItemClickListener,你可以监听ListView项的点击事件。在回调方法`onItemClick()`中,你可以获取被...

    android-recycler-view:回收者视图的基础

    在Android开发中,`RecyclerView`是一个非常重要的组件,它用于高效地展示大量数据集合,尤其在处理滚动列表时,性能优越。本篇文章将深入探讨`RecyclerView`的基础知识,包括其工作原理、设置与使用方法、适配器和...

Global site tag (gtag.js) - Google Analytics