亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android開(kāi)發(fā)中setContentView和inflate的區(qū)別分析

 更新時(shí)間:2016年07月06日 10:15:01   作者:與時(shí)俱進(jìn)  
這篇文章主要介紹了Android開(kāi)發(fā)中setContentView和inflate的區(qū)別,較為詳細(xì)的分析了setContentView和inflate的功能、用法及二者的區(qū)別,需要的朋友可以參考下

本文實(shí)例講述了Android開(kāi)發(fā)中setContentView和inflate的區(qū)別。分享給大家供大家參考,具體如下:

一般用LayoutInflater做一件事:inflate

inflate這個(gè)方法總共有四種形式(見(jiàn)下面),目的都是把xml表述的layout轉(zhuǎn)化為View對(duì)象。

其中有一個(gè)比較常用,View inflate(int resource, ViewGroup root),另三個(gè),其實(shí)目的和這個(gè)差不多。

int resource,也就是resource/layout文件在R文件中對(duì)應(yīng)的ID,這個(gè)必須指定。

而ViewGroup root則可以是null,null時(shí)就只創(chuàng)建一個(gè)resource對(duì)應(yīng)的View,不是null時(shí),會(huì)將創(chuàng)建的view自動(dòng)加為root的child。

setContentView和inflate區(qū)別:

setContentView()一旦調(diào)用, layout就會(huì)立刻顯示UI;而inflate只會(huì)把Layout形成一個(gè)以view類(lèi)實(shí)現(xiàn)成的對(duì)象,有需要時(shí)再用setContentView(view)顯示出來(lái)

一般在activity中通過(guò)setContentView()將界面顯示出來(lái),但是如果在非activity中如何對(duì)控件布局設(shè)置操作了,這需LayoutInflater動(dòng)態(tài)加載

<TextView
android:id="@+id/tview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ATAAW.COM"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="按鈕"
/>

在程序中動(dòng)態(tài)加載以上布局。

LayoutInflater flater = LayoutInflater.from(this);
View view = flater.inflate(R.layout.example, null);

獲取布局中的控件。

button = (Button) view.findViewById(R.id.button);
textView = (TextView)view.findViewById(R.id.tview);

接下來(lái)結(jié)合源碼說(shuō)說(shuō)inflate方法的四種形式:

inflate方法總共有四種形式,把xml表達(dá)的layout轉(zhuǎn)化為view. This class is used to instantiate layout xml files into its corresponding view object. It is never be used directly——use getLayoutInflater() or getSystemService(String)getLayoutInflate() or getSystemService(String) to retrieve a standard LayoutInflater instance that is already hooked up that is already hook up to the current context and correct configured for the device you are running on.

1. Context.public abstract object getSystemService(String name)

2. 兩種獲得LayoutInflater的方法

a. 通過(guò)SystemService獲得

復(fù)制代碼 代碼如下:
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLEATER_SERVICE);

b. 從給定的context中獲取

Public static LayoutInflater from(Context context)

c. 兩者的區(qū)別:實(shí)際上是一樣的,源碼

/**
   * Obtains the LayoutInflater from the given context.
   */
  public static LayoutInflater from(Context context) {
    LayoutInflater LayoutInflater =
        (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (LayoutInflater == null) {
      throw new AssertionError("LayoutInflater not found.");
    }
    return LayoutInflater;
}

3. LayoutInflater.inflate()將Layout文件轉(zhuǎn)換為View,專(zhuān)門(mén)供Layout使用的Inflater。雖然Layout也是View的子類(lèi),但在android中如果想將xml中的Layout轉(zhuǎn)換為View放入.java代碼中操作,只能通過(guò)Inflater,而不能通過(guò)findViewById()。

4.

LinearLayout linearLayout =
(LinearLayout) findViewById(R.id.placeslist_linearlayout);
linearLayout.addView(place_type_text);

5. findViewById有兩種形式

R.layout.xx是引用res/layout/xx.xml的布局文件(inflate 方法),R.id.xx是引用布局文件里面的組件,組件的id是xx(findViewById方法)。所有的組件id都能用R.id.xx來(lái)查看,但是組件不在setContentView()里面的layout中就無(wú)法使用,Activity.findViewById()會(huì)出現(xiàn)空指針異常

a. activity中的findViewById(int id)

b. View 中的findViewById(int id)

6.不同點(diǎn)是LayoutInflater是用來(lái)找layout下xml布局文件,并且實(shí)例化!而findViewById()是找具體xml下的具體 widget控件(如:Button,TextView等)

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android視圖View技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫(kù)技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫(kù)操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開(kāi)發(fā)之SD卡操作方法匯總》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Flutter 容器盒子模型的使用示例

    Flutter 容器盒子模型的使用示例

    在網(wǎng)頁(yè)開(kāi)發(fā)中,有盒子模型,號(hào)稱(chēng)統(tǒng)一三端的 Flutter 也不例外,而且和 HTML 的盒子模型幾乎是一樣的,本篇文章通過(guò)簡(jiǎn)單的例子說(shuō)明一下 Flutter 的盒子模型,方便以后再做界面時(shí)可以更好的理解布局。
    2021-05-05
  • Android實(shí)現(xiàn)左右擺動(dòng)的球體動(dòng)畫(huà)效果

    Android實(shí)現(xiàn)左右擺動(dòng)的球體動(dòng)畫(huà)效果

    這篇文章主要介紹了Android實(shí)現(xiàn)左右擺動(dòng)的球體動(dòng)畫(huà)效果,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Flutter系列重學(xué)Container示例詳解

    Flutter系列重學(xué)Container示例詳解

    這篇文章主要為大家介紹了Flutter系列重學(xué)Container示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法詳解

    Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法詳解

    這篇文章主要介紹了Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法,結(jié)合具體實(shí)例形式分析了Android距離傳感器的控制屏幕熄滅的實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android自定義PopWindow實(shí)現(xiàn)QQ、微信彈出菜單效果

    Android自定義PopWindow實(shí)現(xiàn)QQ、微信彈出菜單效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義PopWindow實(shí)現(xiàn)QQ、微信彈出菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 深入分析Android構(gòu)建過(guò)程

    深入分析Android構(gòu)建過(guò)程

    本篇內(nèi)容主要講了Android 構(gòu)建的過(guò)程需要的步驟以及從編譯到生成等原理,一起來(lái)學(xué)習(xí)下。
    2017-11-11
  • 實(shí)例講解Android Fragment的兩種使用方法

    實(shí)例講解Android Fragment的兩種使用方法

    今天小編就為大家分享一篇關(guān)于實(shí)例講解Android Fragment的兩種使用方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android實(shí)現(xiàn)圖片上傳功能

    Android實(shí)現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android控件拖動(dòng)實(shí)例詳解

    Android控件拖動(dòng)實(shí)例詳解

    這篇文章主要介紹了 Android控件的拖動(dòng)實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-12-12
  • Flutter利用ORM框架管理數(shù)據(jù)庫(kù)詳解

    Flutter利用ORM框架管理數(shù)據(jù)庫(kù)詳解

    使用?ORM?框架最大的好處是簡(jiǎn)化了數(shù)據(jù)庫(kù)維護(hù)的代碼量,使得我們可以專(zhuān)注于業(yè)務(wù)代碼實(shí)現(xiàn)。本篇,我們看看如何使用ORM框架管理數(shù)據(jù)庫(kù)版本遷移,需要的可以參考一下
    2023-04-04

最新評(píng)論