2017/4/18

Xamarin.Forms 教學系列文(十三.貳)從串流與不同平台載入圖片 & Toolbars

學習目標
  • ImageSource.FromStream() - 從串流讀圖
  • ImageSource.FromFile() - 各平台讀圖
  • 了解各平台圖片解析度
  • Toolbars

十三.壹 章節介紹了讀取圖片四種方法的前兩種,這節會介紹剩下的 FromStream() FromFile()

特別是 FromFile() 方法會從不同平台讀取圖片,更需要了解各圖片解析度之特性。

先從 FromStream() 開始:

2017/4/17

Xamarin.Forms 教學系列文(十三.壹 - 1)非同步讀取 Uri 圖片



學習目標
  • Device.BeginInvokeOnMainThread 非同步
  • ActivityIndicator 轉圈圈等待圖

會將這支小程式獨立出來講解,主要原因是從 Uri 讀取圖片時會有短暫的延遲,

若有大量圖片要讀取話,一定會產生不好的使用者經驗,所以必須搭配非同步的方法來載圖。

直接上程式碼:

前端很單純,最上方一個 Image,中間一個 Label 顯示檔案名稱,一個 ActivityIndicator 轉圈圈,兩個 Button 切換前後張圖。

2017/4/10

Xamarin.Forms 教學系列文(十三.壹)從網址或內嵌資源載入圖片



學習目標
  • ImageSource.FromUri()  - 從網址讀圖
  • Aspect - 圖片填滿方式
  • ImageSource.FromResource() - 從 PCL 專案讀圖

由於各家平台顯示 Bitmaps 方式不太一樣。

於是 Xamrin 提供了 Image(我是類別) 來統合處理 Bitmaps 圖片的顯示。

Image 最重要的屬性為 Source,用來指定圖片的來源,其方法有四:
  • ImageSource.FromUri() - 從網址載入
  • ImageSource.FromResource() - 從 PCL 內嵌資源載入
  • ImageSource.FromFile() - 從各平台專案內載入
  • ImageSource.FromStream() - 從 .NET 提供的 Stream 載入

一般來說,FromUri() FromResource() 用來讀取跟平台 無相依性 的圖片。

FromFile() 則用來針對不同平台取得不同的圖片,例如 MenuItem 或 ToolbarItem 的 Icon。


對應這四種方法,Image 還有三個子類別,UriImageSource、FileImageSource & StreamImageSource。

雖然在 .cs 內用 ImageSorce.FromXXX() 方法直接指定圖片來源比較方便,不過偶爾還是會在 XAML 內使用這三個子類別。


這章節會先從 FromUri()FromResource() 開始~

2017/4/5

Xamarin.Forms 教學系列文(十二.貳)Implicit styles, 一種不用寫 key 的 Style



學習目標
  • Implicit styles
  • Dynamic styles
  • Device styles

每一個 ResourceDictionary 都必須有 key 這個值,若你試著寫一個沒有 key 的 dictionary,一定會出現 NullException。

但是在這一小節,要介紹的是一個不用自己寫 key 的故事… 

Style 內若沒有寫 x:key,系統會由 TargetType 自動產生一組,並找到 TargetType 對應的 Visual Element 套用之。

這就是 Implicit style !!

(以 Button 為例,系統會產生 x:key = Xamarin.Forms.Button,不過你不需要知道)

底下為範例程式碼: