zoukankan      html  css  js  c++  java
  • 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

    参考:http://hi.baidu.com/laocui172/item/03649bfcaee761c4a835a2ac

  • 相关阅读:
    html数据属性 data-*
    切片,索引,基本数据类型
    计算机是什么
    使用CSS3和jQuery可伸缩的搜索条
    一个按钮判断两次事件,切换图标
    Javascript(jQuery)中绑定页面上所有按钮点击事件的几种方式
    jq向上无缝滚动
    js避免全局污染
    闭包:让外部函数能访问函数内的变量,让局部变量长期贮存在内存中
    position绝对剧中
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3744877.html
Copyright © 2011-2022 走看看