Google官方Training閱讀筆記(持續(xù)更新)


今日翻看胡凱大神的官方training的翻譯版本栏尚,發(fā)現(xiàn)已經(jīng)跟不上官方的版本的更新了归苍,遂直接看英文原版宠默,雖然英語(yǔ)不算好麸恍,但是好在沒(méi)有特別難理解的單詞和句子」饧冢看了好幾篇之后發(fā)現(xiàn)雖然知識(shí)點(diǎn)比較簡(jiǎn)單或南,但是容易忘。我將把關(guān)鍵知識(shí)點(diǎn)記錄在此艾君,方便以后翻閱采够。如果能夠幫助到任何其他路過(guò)的朋友,那是再好不過(guò)了冰垄。每一個(gè)標(biāo)題對(duì)應(yīng)著官方的相應(yīng)章節(jié)蹬癌。

Get Started

1、在EditText中想要在用戶沒(méi)有輸入時(shí)給出提示信息虹茶,可以使用android:hint="@string/edit_message"逝薪。

2、使用android:layout_weight="1"蝴罪,即根據(jù)權(quán)重來(lái)計(jì)算各個(gè)組件的寬度董济,使得填滿手機(jī)屏幕的寬度。這是組件的寬度還應(yīng)該設(shè)為android:layout_width="0dp"要门,如果設(shè)置成wrap_content虏肾,這時(shí)的寬度屬性也起不到任何作用。如果給View設(shè)置了match_parent的屬性欢搜,那么上面計(jì)算權(quán)重時(shí)則不是通常的正比封豪,而是反比,也就是權(quán)重值大的反而占據(jù)空間小炒瘟。

3吹埠、button有個(gè)onclick屬性android:onClick="sendMessage",這樣當(dāng)點(diǎn)擊它就會(huì)去執(zhí)行sendMessage方法,這個(gè)方法有三個(gè)限制:

  • 必須是public的
  • 返回類型必須是void
  • 有且僅有一個(gè)參數(shù)缘琅,而且參數(shù)必須是View

不過(guò)我覺(jué)得這個(gè)并不常用粘都,看看就行了。很多時(shí)候我們是在button上添加點(diǎn)擊事件的監(jiān)聽(tīng)器來(lái)實(shí)現(xiàn)的胯杭。

4驯杜、支持多國(guó)語(yǔ)言,在res/中創(chuàng)建一個(gè)額外的values目錄以連字符和ISO語(yǔ)言代碼結(jié)尾命名做个,比如values-es/ 是為語(yǔ)言代碼為"es"的區(qū)域設(shè)置的簡(jiǎn)單的資源文件的目錄。
比如滚局,西班牙語(yǔ)所在的文件居暖,/values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>

5、res目錄下各個(gè)文件的含義藤肢,注意名字不要隨便更改太闺,否則即使路徑正確也會(huì)提示找不到你的資源。

  • animator/ : 用于定義屬性動(dòng)畫的 XML 文件嘁圈。

  • anim/ : 定義漸變動(dòng)畫的 XML 文件省骂。(屬性動(dòng)畫也可以保存在此目錄中,但是為了區(qū)分這兩種類型最住,屬性動(dòng)畫首選 animator/ 目錄钞澳。)

  • color/ :用于定義顏色狀態(tài)列表的 XML 文件。

  • drawable/ :位圖文件(.png涨缚、.9.png轧粟、.jpg、.gif)或編譯為以下Drawable 資源子類型的 XML 文件:位圖文件脓魏、九宮格(可調(diào)整大小的位圖)兰吟、狀態(tài)列表、形狀茂翔、動(dòng)畫Drawable混蔼、其他Drawable 。

  • mipmap/ :適用于不同啟動(dòng)器圖標(biāo)密度的 Drawable 文件珊燎。

  • menu/ :用于定義應(yīng)用菜單(如選項(xiàng)菜單惭嚣、上下文菜單或子菜單)的 XML 文件。

  • raw/ : 要以原始形式保存的任意文件俐末。要使用原始 InputStream 打開(kāi)這些資源料按,請(qǐng)使用資源 ID(即 R.raw.filename)調(diào)用 Resources.openRawResource()。但是卓箫,如需訪問(wèn)原始文件名和文件層次結(jié)構(gòu)载矿,則可以考慮將某些資源保存在 assets/ 目錄下(而不是 res/raw/)。assets/ 中的文件沒(méi)有資源 ID,因此您只能使用 AssetManager 讀取這些文件闷盔。

  • values/ : 包含字符串弯洗、整型數(shù)和顏色等簡(jiǎn)單值的 XML 文件。其他 res/ 子目錄中的 XML 資源文件是根據(jù) XML 文件名定義單個(gè)資源逢勾,而目錄中的 values/ 文件可描述多個(gè)資源牡整。由于每個(gè)資源均用其自己的 XML 元素定義,因此您可以根據(jù)自己的需要命名文件溺拱,并將不同的資源類型放在一個(gè)文件中逃贝。但是,為了清晰起見(jiàn)迫摔,您可能需要將獨(dú)特的資源類型放在不同的文件中沐扳。 例如,對(duì)于可在此目錄中創(chuàng)建的資源句占,下面給出了相應(yīng)的文件名約定:
    arrays.xml:用于資源數(shù)組(類型化數(shù)組)沪摄。
    colors.xml:顏色值。
    dimens.xml:尺寸值纱烘。
    strings.xml:字符串值杨拐。
    styles.xml:樣式。

  • xml/ : 可以在運(yùn)行時(shí)通過(guò)調(diào)用 Resources.getXML() 讀取的任意 XML 文件擂啥。各種 XML 配置文件(如可搜索配置)都必須保存在此處哄陶。

6、有4種普遍尺寸:小(small)啤它,普通(normal)奕筐,大(large),超大(xlarge)变骡。4種普遍分辨率:低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi)离赫。創(chuàng)建不同的layout,目錄以-(screen_size)為后綴命名塌碌。例如渊胸,對(duì)大尺寸屏幕(large screens),一個(gè)唯一的layout文件應(yīng)該保存在res/layout-large/中台妆。但是在引用的時(shí)候依然是R.layout.XXX翎猛,系統(tǒng)會(huì)根據(jù)不同的設(shè)備去加載合適的文件,值得注意的是接剩,要保證在各個(gè)目錄下都要有相同名字的文件切厘。官方還建議在你的所有的activity中都用toolbar來(lái)當(dāng)作app bar。在你的manifest.xml中將application聲明為NoActionBar的主題來(lái)禁用原生的actionBar懊缺,因?yàn)樵贏ndroid 3.0(API level 11)使用的默認(rèn)主題都是含有actionbar的疫稿。

<application
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    />

在layout文件中引用toolbar組件:

<android.support.v7.widget.Toolbar
   android:id="@+id/my_toolbar"
   android:layout_width="match_parent"
   android:layout_height="?attr/actionBarSize"
   android:background="?attr/colorPrimary"
   android:elevation="4dp"
   android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
   app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

然后在oncreate方法中調(diào)用setSupportActionBar:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(myToolbar);
    }

Best Practices For User Interface

1、actionBar由于兼容性問(wèn)題,已經(jīng)被toolbar所取代遗座。首先你要在SDK manager中下載兼容包v7 appcompat舀凛,然后是你的activity繼承AppCompatActivity。

2途蒋、在toolbar中添加button猛遍,寫在res/menu/目錄下。多余的放置不下的button將進(jìn)入menu号坡,也可以顯式的指定它一直在menu中收起來(lái):

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- "Mark Favorite", should appear as action button if possible -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

其中懊烤,ifRoom表示如果還有空間,就將該item展示出來(lái)筋帖;如果沒(méi)有空間的話奸晴,就將它收起來(lái)放在堆疊的item菜單中。item的點(diǎn)擊事件作出響應(yīng)邏輯寫在onOptionsItemSelected中日麸。當(dāng)點(diǎn)擊某個(gè)item時(shí),系統(tǒng)會(huì)回調(diào)這個(gè)函數(shù)逮光。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            // User chose the "Settings" item, show the app settings UI...
            return true;

        case R.id.action_favorite:
            // User chose the "Favorite" action, mark the current item
            // as a favorite...
            return true;

        default:
            // If we got here, the user's action was not recognized.
            // Invoke the superclass to handle it.
            return super.onOptionsItemSelected(item);

    }
}

3代箭、在tool bar添加返回箭頭,官方叫做up Action涕刚。實(shí)現(xiàn)方法是在配置文件中指定一個(gè)父activity嗡综。

<application ... >
    ...

    <!-- The main/home activity (it has no parent activity) -->

    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>

    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.MyChildActivity"
        android:label="@string/title_activity_child"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >

        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>
Enable the Up Button

android:parentActivityName屬性是Android 4.1 (API level 16)才加入的,要想支持低版本的設(shè)備杜漠,還需要添加meta-data极景,它是一個(gè)鍵值對(duì),name是固定的android.support.PARENT_ACTIVITY驾茴,value是你想要返回到的activity的路徑盼樟。到這里還沒(méi)完,還需要在代碼中激活這個(gè)button锈至。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_child);

    // my_child_toolbar is defined in the layout file
    Toolbar myChildToolbar =
        (Toolbar) findViewById(R.id.my_child_toolbar);
    setSupportActionBar(myChildToolbar);

    // Get a support ActionBar corresponding to this toolbar
    ActionBar ab = getSupportActionBar();

    // Enable the Up button
    ab.setDisplayHomeAsUpEnabled(true);
}

鏈接:Up Action


想要持續(xù)關(guān)注的朋友晨缴,請(qǐng)關(guān)注我的個(gè)人博客-->電梯直達(dá)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市峡捡,隨后出現(xiàn)的幾起案子击碗,更是在濱河造成了極大的恐慌,老刑警劉巖们拙,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稍途,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡砚婆,警方通過(guò)查閱死者的電腦和手機(jī)械拍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人殊者,你說(shuō)我怎么就攤上這事与境。” “怎么了猖吴?”我有些...
    開(kāi)封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵摔刁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我海蔽,道長(zhǎng)共屈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任党窜,我火速辦了婚禮拗引,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幌衣。我一直安慰自己矾削,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布豁护。 她就那樣靜靜地躺著哼凯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪楚里。 梳的紋絲不亂的頭發(fā)上断部,一...
    開(kāi)封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音班缎,去河邊找鬼蝴光。 笑死,一個(gè)胖子當(dāng)著我的面吹牛达址,可吹牛的內(nèi)容都是我干的蔑祟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼苏携,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼做瞪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起右冻,我...
    開(kāi)封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤装蓬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后纱扭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體牍帚,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年乳蛾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暗赶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鄙币。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蹂随,靈堂內(nèi)的尸體忽然破棺而出十嘿,到底是詐尸還是另有隱情,我是刑警寧澤岳锁,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布绩衷,位于F島的核電站,受9級(jí)特大地震影響激率,放射性物質(zhì)發(fā)生泄漏咳燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一乒躺、第九天 我趴在偏房一處隱蔽的房頂上張望招盲。 院中可真熱鬧,春花似錦嘉冒、人聲如沸曹货。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)控乾。三九已至,卻和暖如春娜遵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壤短。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工设拟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人久脯。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓纳胧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帘撰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跑慕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容