重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本文面向 Flutter 初學者,旨在用易懂的方式帶大家入門。除了 Flutter 代碼,還會介紹到語法、原理、特性等基礎知識。相信本文能幫助你學習和理解 Flutter。
成都創新互聯公司是一家集網站建設,麥蓋提企業網站建設,麥蓋提品牌網站建設,網站定制,麥蓋提網站建設報價,網絡營銷,網絡優化,麥蓋提網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
我們先看一下目前的一些跨平臺方案,從前端渲染的角度來分類的話,大致可以分為以下幾種方案。
WebView 渲染
這種方案就很好理解,現在很多項目都會嵌入 H5 的頁面。就是用 JavaScript 等前端技術進行開發,在客戶端上用 WebView 來進行渲染。微信小程序目前使用的就是這種方案。
它的優點很明顯,使用成熟的前端技術進行開發,學習成本低,開發效率高,并且支持動態發布代碼。
但缺點也很明顯,在性能體驗上,和原生還是存在較大差距的。
原生控件渲染
既然 WebView 的性能不夠好,于是就有了使用原生控件進行渲染的方案。這種方案,同樣也是使用 JavaScript 開發,區別是它最終是調用原生控件進行渲染的。這種方案的代表是 Facebook 的 React Native。
由于使用原生控件進行渲染,性能體驗也會更接近原生。但也只是更接近,和原生還是有差距的,因為它需要頻繁的進行 JavaScript 和原生之間的通信,這個通信效率是比較低的。
另外,由于需要適配各個平臺的控件,那就有可能出現,系統控件更新了,而框架本身還沒有更新,由此產生了一些問題。換句話說,這種方案是受到原生控件限制的。
繪圖引擎渲染
接下來就是主角了。
在前端,如果完全不使用原生控件,我們可以通過系統的繪圖 API 繪制出一個用戶界面。從這個角度出發,可以在各個平臺使用一個統一接口的繪圖引擎來進行界面繪制,這個引擎最終調用的是系統的 API 繪制的。這樣的話,它的性能可以做到接近原生,并且又不受原生控件的限制,在不同平臺上能夠做到 UI 統一。
Flutter 就是這樣的一個開發框架。
一個跨平臺 UI 解決方案
Flutter 是由 Google 開發的,一個跨平臺 UI 解決方案。換句話說,它原則上只管 UI 的問題,如果涉及到平臺本身的一些功能,比如調用藍牙、攝像頭,一般還是需要原生代碼去操作。但現在也會有一些第三方庫幫我們解決這些問題。
繪圖引擎 Skia
Flutter 使用 Skia 作為它的繪圖引擎。Skia 已經被 Google 收購,目前很多 Google 旗下的產品都是用 Skia 繪制的,包括 Android。
Android 內置了 Skia,但 iOS 沒有,所以在打 iOS 安裝包的時候,會把 Skia 一起打進去。這就導致了,用同一份 Flutter 代碼打包之后,iOS 的包要比 Android 的包大一些。
開發語言 Dart
Flutter 使用的開發語言,叫 Dart。Dart 也是 Google 自家的,它是一門面向對象的語言,從它身上會看到一些其他開發語言的影子。學習起來難度不大的。
前面講跨平臺方案的時候,可以發現別的方案基本都是用 JavaScript 作為開發語言的,但為什么 Flutter 不用?就因為 Dart 是谷歌自家的嗎?這個問題先留著,我們后面會提到。
這里部分就簡單點帶過了,具體的搭建流程可以在官網查看:
主要的搭建步驟如下:
下載 Flutter SDK
官網下載地址:
由于在國內訪問可能受限,官方為中國開發者搭建了鏡像:
更新環境變量
解壓后,將 flutter\bin 的全路徑添加到環境變量 PATH 中。
安裝開發工具
理論上,任何文本編輯器都可以用來開發 Flutter 應用,但推薦的開發工具是 Android Studio、IntelliJ 以及 VS Code。因為在這些開發工具上,可以安裝官方的 Flutter 和 Dart 插件,得到更好的開發體驗。文章里使用 Android Studio 來演示。
如果你打算開發 iOS 應用,則還需要安裝 Xcode。
安裝插件
在開發工具的插件設置中,安裝上面說到的 Flutter 和 Dart 插件。Flutter 插件用于支持 Flutter 的運行、調試、熱重載等功能,而 Dart 插件則提供了代碼的輸入校驗、代碼補全等功能。
萬物始于 Hello World,我們先來創建一個顯示 Hello World 的 Flutter 項目。
在 Android Studio 的歡迎頁面選擇 Start a new Flutter project ,或者通過菜單欄的 File New New Flutter Project ,創建一個新的 Flutter 項目。
創建好的項目里面包含了 android 和 ios 兩個文件夾,它們是標準的 Android 和 iOS 項目。我們的 Flutter 代碼,存放在 lib 文件夾里。項目創建好后,會默認帶一個計數器的示例,我們不管它,把 main.dart 的代碼改成 Hello World:
啟動一個模擬器,或者連上真機,點擊 Run 運行一下,就能看這樣一個界面了:
具體代碼先混個眼熟就好,具體的后面會再講到。
在寫 Flutter 之前,還要先跟大家簡單介紹一下 Dart 的語法。如果你有 Java 或 JavaScript 的開發經驗,以及面向對象的編程思想,學起來是很快的。
我們可以在 test 文件夾下新建一個 dart 文件,用來寫測試代碼。
指定類型
var
但和 JavaScript 不同的是,以下代碼在 JavaScript 是不會報錯的,但在 Dart 里會報錯:
Object
如果非要上面這樣寫,那也可以。把 var 換成 Object 就不報錯了:
和 Java 類似,Object 是所有對象的根基類。但是這樣的話,如果想打印一下 num 的字符串長度,是會報錯的:
因為 length 是屬于 String 的,但系統只知道 num 是一個對象,并不知道它是一個 String。
dynamic
如果還是非要這樣寫,那也可以。Dart 有一個特有的關鍵字 dynamic,把 Object 改成 dynamic 就不報錯了:
我們運行一下這個文件,可以在控制臺看到正確打印出了字符串長度。
函數
dynamic
在 Dart 里,函數也是可以不寫返回類型的,不寫的話會被當做 dynamic 來處理。這樣的話,函數的類型就是 return 的類型,如果沒有 return 則是 void 類型。比如可以這樣:
運行之后是能正確打印出字符串長度的。
用于傳參
Dart 里的函數也是一個對象,所以可以把函數作為參數來傳遞,比如:
可選參數
在 Dart 的函數傳參里,有一個叫可選參數的概念,我們以文字控件 Text 為例,在源碼里可以看到 Text 的構造函數是這樣的:
首先,在參數里有一個 data,它是要顯示的文字內容,是一個必填項。而 data 后面的一堆參數,是用一個大括號括起來的,這些參數就叫做可選參數,意思是這些參數可傳可不傳。
假如我們要顯示一個比較長的文字,又想限制它最多顯示兩行,就可以這樣來創建一個 Text:
可選參數,在 Flutter 里面用的非常多。
異步
Future
在 Dart 里使用 Future 來處理異步任務,比如我們現在延時一秒打印 666,代碼如下:
Future 的語法和 Promise 非常像。任務執行成功會調用 then,執行失敗會調用 catchError,而無論成功還是失敗,都會調用 whenComplete。
async/await
如果你不喜歡上面那種寫法,或者是想把異步轉成同步,就可以用 async 和 await 這兩個關鍵字來轉換。
我們把上面的代碼轉換一下,寫一個 getString 方法,返回的類型是 Future,它會延時返回一個字符串。在 main 函數后面加上 async 關鍵字,在 getString() 前面加上 await,代碼如下:
運行之后可以看到,能正常延時一秒后,把字符串打印出來。這里 getString() 返回的類型是 Future,而 await getString() 則是返回了延時之后返回的字符串。await 要在 async 的函數里面才能使用。
async 和 await 其實是一個語法糖,它最終也是轉換成 Future 調用鏈的形式執行的。
接下來回到 Flutter,Flutter 里最重要的一個概念是 Widget(下面翻譯作控件)。
在原生開發里面,我們可能會在界面上區分,這是一個 View,這是一個 Layout,這是一個 View Controller。但在 Flutter 里面,它們全都屬于一個統一的模型 Widget。可以說,在 Flutter 界面里,所有東西都是 Widget。
以前學面向對象的時候,我們都聽過一句話,叫萬物皆對象。我這里套用一下,在 Flutter 里, 萬物皆控件 。
具體有哪些控件,我做了一下簡單的分類。
根控件
所有的控件都屬于 StatefulWidget 或 StatelessWidget 。它們的區別是,StatefulWidget 擁有狀態 State ,而 StatelessWidget 沒有。
StatefulWidget
當一個控件是可變的時候,就要使用 StatefulWidget 來構建。StatefulWidget 本身不可變,但它持有的狀態 State 是可變的。
StatelessWidget
當一個控件狀態是固定不可變的時候,就可以使用 StatelessWidget。前面我們寫的 Hello World 就是使用 StatelessWidget。
容器控件
容器類控件一般是將某些屬性或配置,作用在它的子控件上,比如控件所在的寬高、背景、位置等。
常用的容器控件有 Container、Center、Padding 等。
布局控件
布局控件可以類比作原生開發中的 Layout,通常它會擁有一個 children 的屬性,用于接收一個控件數組,對這些控件進行特定的排版。
常用的布局控件有 Row、Column、Stack、Flex 等。
基礎控件
基礎控件就是常用的文字、按鈕、圖片等控件。
常用的基礎控件有 Text、TextField、Button、Image 等。
功能控件
在 Flutter 里還有一類控件,它們不影響 UI 布局,但帶有一些特定的功能,比如頁面跳轉、事件監聽、定義主題等。我們把這一類控件稱作功能控件。
常用的功能控件有 Navigator、NotificationListener、Theme 等。
開始寫 Flutter 代碼了。還記不記得,在 Flutter 項目創建之后,是自帶一個計數器 demo 的,現在我們用自己的代碼實現一遍。代碼修改成如下:
運行之后,就可以看到這樣的界面了:
按鈕每點擊一次,數字就會加一。下面我們來分析一下這段代碼,看下里面用到的一些 Widget。
StatefulWidget
由于頁面中的數字是跟隨狀態變化的,所以該頁面改用 StatefulWidget。StatefulWidget 并不會直接返回一個 Widget,而是返回狀態 State,在 State 里再返回 Widget。
Scaffold
Scaffold 是一個標準的 Material Design 頁面,它包含了標題欄、浮動按鈕、側滑菜單、底部導航欄等配置。我們這里用到了標題欄 appBar、頁面內容 body、浮動按鈕 floatingActionButton。
AppBar
AppBar 就是標題欄,通過查看控件的構造方法,我們可以知道它可配置的屬性。
AppBar 的可選參數除了標題 title,還可以配置標題前的內容 leading,右側的操作按鈕 anctions,控件垂直高度 elevation 等。我們只傳了 title,其他屬性都用默認值。
Center
Center 是一個容器類控件,它的作用就是讓它的子控件居中顯示。
FloatingActionButton
熟悉安卓開發的應該對這個控件比較熟悉,它就是頁面右下角一個特定樣式的 Button,參數里面的 onPressed 是一個必填項,要傳一個點擊之后的回調函數。
根據這個例子,下面給大家介紹一下 Flutter 兩個比較重要的特性。
點擊 Button 之后,我們把 num 變量加一,并使用 setState 通知狀態發生了改變,Flutter 會根據新的狀態更新 UI。如果有接觸過小程序開發,setState 就和小程序的 setData 類似。
在 Flutter 里面我們不需要用 set 方法來更新 UI,可變控件是和狀態綁定的,這就是 Flutter 的響應式 UI 編程。
在 Android Q 和 iOS 13 里都加入了暗黑模式,我們也換一個暗黑主題來玩一下。MaterialApp 里有一個 theme 的屬性,我們把它配置一下:
這次改完之后不點 Run 了,我們點一下閃電圖標 Flutter Hot Reload ,就能看到界面發生了變化:
這就是 Flutter 的 熱重載 ,在修改完代碼之后,通過熱重載就能馬上在設備上看到修改結果,可以很大程度上增加開發效率。
下面再給大家介紹幾個 Flutter 里的常見操作。
在 Flutter 里,使用 Navigator 來管理頁面跳轉,比如要跳轉到一個 NewPage 可以這樣寫:
進棧使用 push,出棧則是 pop。
使用 MaterialPageRoute 會模擬出 Android 上頁面跳轉的過場效果。
我們來看看怎么顯示一張本地圖片。
先在根目錄新建一個存放圖片的文件夾,比如叫 images,把圖片 picture.png 放進去。
找到根目錄下的 pubspec.yaml 文件,這個便是 Flutter 依賴配置文件,我們需要在這里配置一下剛才的圖片:
這樣,我們就能使用 Image 控件把這張圖片顯示出來了:
和 node 的 npm 以及 Android 的 jcenter 類似,Flutter 也擁有一個公共倉庫 pub.dev。pub.dev 是 Google 官方的 Dart 倉庫,在上面可以找到我們需要的包和插件。
Flutter 本身沒有 Toast,我們來接入一個。在 pub.dev 上搜索后,我決定使用 fluttertoast:
按照說明,在 pubspec.yaml 文件里的 dependencies 下配置:
點一下 Android Studio 右上角的 Packages get 同步之后就可以使用了:
我們上面使用的都是 Material Design 的控件,它們都是在 flutter/material.dart 包里面的。如果要使用 iOS 風格的控件,則要用到 flutter/cupertino.dart 包:
iOS 風格的控件,基本都以 Cupertino 開頭。我們把計時器頁面里的控件替換一下:
效果如下:
代碼的部分就到這里了,接下來跟大家聊一下編譯方式,編程語言的編譯方式有兩種。
關于它們孰優孰劣,就要看從哪個角度去對比了。JIT 的話,它的一大特點就是支持動態發布代碼,也就是支持熱更新。但要是從性能的角度考慮,AOT 會更好,因為在運行的時候不用再進行編譯的操作的,運行的效率會更高一些。
回到我們一開始的時候留下的問題,為什么別的跨平臺方案都是用 JavaScript,而 Flutter 要用 Dart 來開發。JavaScript 的編譯方式是 JIT 的,它不支持 AOT。而 Dart 同時支持 JIT 和 AOT。
Flutter 在開發階段使用 JIT,讓我們用上了熱重載,增加了開發效率。在打包時改用 AOT,保證了正式版應用的性能。
最后講一下大家比較關心的一個東西,Flutter 是否支持熱更新?前面說到 Dart 支持 JIT,所以從技術層面它是支持的。但是目前是不支持的,在官方的計劃文檔中,可以看到:
至于原因,官方在這里進行了說明。總的來說,是由于政策的限制,以及出于對性能和安全性的考慮,暫時不支持了。
到這就結束啦。由于想把 Flutter 基礎在一篇內講完,沒有涉及太多細節,如果要寫 Flutter 代碼還需要深入學習。但相信理解之后再學,會輕松很多。
在App設計中狀態欄純色的這種設計很常見,但是如果狀態欄需要為白色的時候就必須為黑色字體。在Android中已經有很多成熟的方案來處理這種情況,那我們現在看看在Flutter中這種情況該怎么處理。
這里的ThemeData即為控制App的主題,primarySwatch設置即可控制主題的各類顏色,但是這里的顏色是需要MaterialColor,但是純色種的黑色和白色不是MaterialColor。所以不能設置primarySwatch為Colors.white。
注:MaterialColor包含以下這些
那么就只能使用其他方式設置主題為白色。即為設置
此時我們可以看到App的狀態欄如下所示(Android)
雖然AppBar變成了白色,但是狀態欄是灰色顯然不是我們想要的。
嘗試設置文字顏色,AppBar的Brightness有兩種模式light和dark
這個和SystemUiOverlayStyle的light和dark剛好相反
然后設置狀態欄顏色
設置為紅色之后,得到以下的樣式,可以看到狀態欄為紅色了,文字為白色
那么接下來我們只需要將狀態欄設置為白色或者透明,狀態欄文字設置為黑色。
最后得到以下視圖
注:使用PreferredSize包裹,可以更得心應手哦!
SystemUiOverlayStyle在設置時其實有很多系統或者版本的限制
[Flutter]使用主題
flutter設置沉浸式狀態欄
)
英語的學習很重要,如何輕松學好英語?如何快速記憶英語單詞呢?下面是由我給大家帶來關于快速記單詞的方法,希望對大家有幫助!
快速記單詞的方法
1、單詞卡片——最直接的單詞操練教具
英語教學遵循先聽說,后讀寫的教學原則。圖片是培養小孩子的聽說能力,幫助小孩子建立單詞的音和義之間的聯系;而單詞卡片則是培養小孩子的單詞認讀能力,幫助小孩子建立單詞的音、形之間的聯系。認讀單詞是單詞教學的終極目標。大聲說,小聲說,與學生唱反調。就是老師說一個單詞,用的聲音量不同,一個大聲,一個小聲,學生要做出相反的,例如老師兩次朗讀cat,一次是大聲,一次是小聲,則學生跟著老師說,正確的是先小聲,后大聲,如果學生像老師一樣先大聲再小聲就錯了。 設陷阱,讓學生跟讀卡片上的單詞,老師故意經常讀錯,讀對的學生可以跟讀,讀錯的就要求學生馬上做出反映,雙手叉腰,瞪著眼睛,做出生氣的樣子,但不準發出任何聲音。 反映錯誤的淘汰,也可采取小組記分! 踩地雷,選定一個單詞為地雷,老師領讀很多個單詞,讀到該單詞的時候,有誰跟著讀了,就是中地雷了,其他學生就一起指著他說:one, two, three, bomb。
2、圖片——使用最頻繁的單詞操練教具
圖片可以用于每一節單詞教學課,不僅適用于單詞呈現,也適用于單詞操練、鞏固環節。在課堂上,經常會采用“What’s the next?”、“What’s missing?” 這兩個猜一猜的游戲。操作方便,而且面很廣。“What’s the next?”:先讓小朋友快速看圖說單詞,然后不打亂順序,從第一張單詞圖片開始,讓小朋友猜一猜它后面的是什么。“What’s missing?”:從單詞圖片中隨意抽掉一張,讓小朋友猜一猜少了哪張。小孩子最喜歡競爭性的游戲,在猜一猜的游戲中,孩子們顯得特別興奮,經常可以聽到孩子們“Yeah”的歡呼聲。 對于稍長的單詞,可以采用Hide and seek游戲:如French fries, 把這一圖片藏在某一個小朋友的位置上,讓小朋友來找,其余學生一起大喊French fries,如果據目標越來越近,則喊得聲音越來越大,反之,則越輕。這一方法對稍長的單詞很有效的。
3、動畫——有趣的單詞操練媒體
動畫課件集聲音、色彩、動畫于一體,繪聲繪色,生動逼真,有利于調動學生的學習積極性和主動性,激發并保持學生學習英語的興趣,使他們敢于說,樂于說,從而促進學生語言表達能力的提高和發展。如教學顏色時,我利用色彩大轉盤,讓學生用I like…說一說自己喜歡的顏色,再轉動轉盤,比一比誰是幸運兒;又如在操練食物單詞時,我利用Flash可以逐步呈現和快速呈現的特點,讓學生在有限的時間里猜出單詞。
英語的學習方法
1、課前預習
預習可以使我們有心理準備,可以幫助我們提高課堂效率。提前預習第二天內容,可以充分了解自己的難點在何處,聽課時就能夠有的放矢。
2 、課堂聽講
一般在課堂節奏是一節課的45分鐘,前5分鐘復習,中間25---30分鐘講解練習,后10分鐘綜合訓練及小結。在課堂上我們應該做到以下幾點:
(1)認真聽,多動筆。
上課全神貫注,認真聽講,做好筆記,無論聽、說、讀、寫都要使自己始終活躍。我們應該記錄什么呢?首先是老師講解時的重點句子,其次要記下老師板書的重要內容,最后要記下這節課自己不懂的地方或者自己的一些所感所得。我們可以將這些記錄在課本上。
(2)積極參與。
英語是實踐性強的學科,要大膽地練習,敢說、敢讀,積極回答老師提出的問題。
(3)松弛有度。
我們的精力有限,不可能整節課都全神貫注。在我們掌握很好的環節,在老師調節課堂氣氛說點笑話時,在進行小組活動的時候,都是我們稍微放松的好時機。
3 、課后學習
(1)自習課的時候,老師要給大家做每日一練,也就是出幾個題目,練習當天所學內容。同學們要獨立完成,有不會的題目及時解決。
(2)回家后,先復習當天所學知識,再寫家庭作業,最后預習明天要學習的內容。
(3)有時間就聽課文錄音。吃飯時,睡覺前,都是播放錄音的時間。即使隨便聽也無所謂,我們需要的是創造盡可能多的英語氛圍。
(4)學習其他英語教材,作為課本的補充和完善。我們可以學到地道的英語,讀到妙趣橫生的小故事,可以拓展我們的視野。
最容易記憶的三類英語單詞
一、象聲詞
象聲詞又稱擬聲詞,是模擬各種聲音的詞。它包括三類,即模擬物體發出的聲音、模擬人發出的聲音和模擬動物發出的聲音。有的象聲詞與它所模擬的聲音非常相似,這樣的詞很容易記憶;有的象聲詞與它所模擬的聲音不完全相似(部分相似),但我們只要加以聯想,也容易記憶。而如果我們不知道一個象聲詞的來源(不知道它所模擬的聲音),這個詞就很難理解和記憶。例如:scud(飛毛腿、速跑)一詞就不易理解和記憶,但如果知道它是模擬“喀得喀得”的速跑聲,就很容易記住。
1.模擬物體發出的聲音,如:
bang一砰然作響,猛撞[擬“梆梆”撞擊聲]
bubble一冒泡,沸騰[擬水冒泡聲]
creak一咯吱咯吱作響[擬物體摩擦聲]
flutter一振翼,顫動[擬反復拍動聲]
gong一鑼[擬“哐哐”的鑼聲]
hack一砍,劈[擬“啪啪”的砍、劈聲]
iiggle一輕輕跳動[擬跳動聲]
kodak一小型照相機拍攝[擬攝影時照相機發出的“咔嗒”聲]
plonk一物體落下碰到另一物體表面時的撲通聲[擬“撲通”聲]
rustle一發沙沙聲[擬樹葉、紙張等摩擦時發時的“沙沙”聲]
sizzle一咝咝聲[擬油炸食物或水滴接觸熱鐵時的“咝咝”聲]
toot一(擬喇叭、號角、笛等的)嘟嘟聲,吹喇叭
whir(r)一呼呼聲[擬物體移動、轉動或飛行時的“呼呼”聲]
2.模擬人發出的聲音。如:
babble一牙牙學語聲[擬嬰孩學話“吧吧”聲]
cackle一咯咯地笑[擬“咯咯”笑聲]
groan一呻吟,哼聲[擬痛苦的呻吟聲]
hiccup一打嗝兒,打呃[擬打呃聲]
iabber一急促而不清楚地說話[擬急促的說話聲]
puff一吹氣[擬吹氣聲]
riot一騷動,暴亂[擬狂鬧聲、嗷嗷叫聲]
sip一呷飲,啜飲[擬吸吮聲]
titter一竊笑,傻笑[擬“嘁嘁咯咯”的竊笑聲]
whoop一哮喘聲,高呼聲[擬“呼呼”聲]
yawp一大聲叫嚷,嚎叫,喧鬧[擬吆喝聲、叫嚷聲]
3.模擬動物發出的聲音。如:
caw一呱呱地叫[擬烏鴉叫聲]
coo一咕咕地叫[擬鴿子“咕咕”叫聲]
growl一嗥叫,怒吠[擬狗的低吠聲]
hoot一貓頭鷹叫聲[擬貓頭鷹“呼呼”叫聲]
mew一咪,喵[擬“喵喵”貓叫聲]
neigh一馬嘶[擬馬嘶聲]
quack—嘎嘎地叫,呱呱地叫[擬鴨子叫聲]
roar一(獅、虎等)吼叫,咆哮[擬野獸吼聲]
yowl一嚎叫,長吼[擬狗、野貓等嚎叫聲]
二、與中文讀音相似、近似的單詞
這類單詞共有三種:
1.由英文譯成中文的,如:sofa(沙發)、hysteria(歇斯底里)、humor(幽默)、ampere(安培)、brandy(白蘭地)、cartoon(卡通)、shampoo(香波)、trust(托拉斯)、poker(撲克牌)、salad(色拉)、tango(探戈)、pudding(布丁)、shock(休克)、heroin(海洛因)
2.由中文譯成英文的,如:typhoon(臺風)、kowtow(叩頭)、oolong(烏龍茶)、litchi(荔枝)、ginseng(人參)、longan(龍眼)等。
3.既非英譯中,亦非中譯英,而是中文、英文讀音巧合,如:tow(拖)、loot(擄)、bandage(繃帶)、fee(費)、tun(桶)等。
三、與另一單詞有聯系的單詞
對一個普通的英語學習者來說,graze(牛羊吃草)一詞也許是個陌生的單詞,但若告訴他這個單詞來自熟詞grass(草),他會馬上感到這個單詞不太陌生了,似乎是個“半熟臉”,也就很容易記住了。類似這種情況的陌生單詞在英語里為數不少。每一個這樣的生詞都有一個與它有內在聯系的熟詞。它們的形、音、義都很相近,只要我們對照比較,便可馬上“變生為熟”,不易忘記。
如:dusk[聯系單詞:dust(灰塵、塵土),原義是“塵土色的”,引申為“昏暗的、微暗的”→黃昏];interval[inter-(在……之間),val=wall(v—W)墻;“在兩墻之間的空隙”引申為“在兩種事物之問的空隙”→(空間或時間的)間隔、間隙];simpleton[對照simple簡單的,引申為“頭腦簡單的人”→傻子、愚蠢者];resemble[re.加強意義,sem來自same同樣的、相同的,引申為“差不多”→像、類似、相似]
猜你喜歡:
1. 背單詞的十大記憶法口訣
2. 最強的單詞記憶法--五步背單詞
3. 世界記憶大師教你記英語單詞
4. 記憶英語單詞的15種方法推薦
5. 巧記英語單詞的8種方法推薦
6. 最快記單詞的方法