Android -- LayoutInflater

简介:

LayoutInflater在Android中是“扩展”的意思,作用类似于findViewById(),不同的是LayoutInflater是用来获得布局文件对象的,而 findViewById()是用来获得具体控件的。LayoutInflater经常在BaseAdapter的getView方法中用到,用来获取整个View并返回。

LayoutInflate 的三种用法:

方法一:

LayoutInflater inflater = LayoutInflater.from(this);
View layout = inflater.inflate(R.layout.main, null);

方法二:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main, null);

方法三:

LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);

简单示例:

复制代码
public class LayoutInflaterActivity extends Activity {
    private EditText et;
    private Button btn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 第一种方法
        LayoutInflater inflater = LayoutInflater.from(this);
        View layout = inflater.inflate(R.layout.main, null);
        // 第二种方法
        // LayoutInflater inflater = getLayoutInflater();
        // View layout = inflater.inflate(R.layout.main, null);
        // 第三种方法
        // LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
        // View layout = inflater.inflate(R.layout.main, null);
        // 获取具体控件并实例化
        et = (EditText) layout.findViewById(R.id.edittext);
        et.setBackgroundColor(Color.YELLOW);
        btn = (Button) layout.findViewById(R.id.btn);
        btn.setBackgroundColor(Color.CYAN);
        // 显示
        setContentView(layout);
    }
}
复制代码

Android里面想要创建一个画面的时候, 一般都是新建一个类, 继承Activity类, 然后在onCreate里面使用setContentView方法来载入一个在xml里定义好的界面.

其实在Activity里面就使用了LayoutInflater来载入界面, 通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个LayoutInflater, 然后使用inflate方法来载入layout的xml, 对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入.

对于一个已经载入的界面, 就可以使用这个界面调用findViewById方法来获得其中的子界面了.

另外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    电话服务
复制代码

 

 

 




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3744877.html,如需转载请自行联系原作者

相关文章
|
缓存 安全 Android开发
Android | 带你探究 LayoutInflater 布局解析原理
Android | 带你探究 LayoutInflater 布局解析原理
237 0
Android | 带你探究 LayoutInflater 布局解析原理
|
XML Android开发 数据格式
Android LayoutInflater的用法详解
相信我们在开发过程中肯定接触过LayoutInflater,比如ListView的适配器里的getView方法里通过LayoutInflater.from(Context).inflater来加载xml布局,在Fragment里的onCreateView里面也是一样,加载布局一共三种方法。
1096 0
|
XML Android开发 数据格式
|
XML Java Android开发
11_Android中HttpClient的应用,读取网络xml及xml解析流,Handler的应用,LayoutInflater的使用,SmartImageView的使用
 1 所需的web项目结构如下: 2 new.xml的文件内容如下: <?xml version="1.0" encoding="UTF-8" ?> <news>          <new>                    <title>3Q大战宣判: 腾讯获赔500万</title>
1417 0