2017/7/29

Xamarin.Forms 教學系列文(二十一)Transforms - 位移 & 放大縮小 & 旋轉


學習目標
  • Translation - 位移
  • Scale - 放大縮小
  • Anchoring - 放大縮小錨定點
  • Rotation - 旋轉
颱風天什麼的在家看原文書打教學最棒了...

顧名思義的,這章節要來介紹 Xamarin.Forms 提供的三種物件變形方式

這三種變形跟以下八個屬性有點關係,型態都是 double:
  • TranslationX
  • TranslationY
  • Scale
  • Rotation
  • RotationX
  • RotationY
  • AnchorX
  • AnchorY

先來介紹 Translation - 位移

2017/7/27

Xamarin.Forms 教學系列文(二十.貳)File I/O



學習目標
  • PCL 實作 FileHelper
  • 檔案的寫入,讀取,刪除

自古以來,檔案存取 是程式最基本的功能,

不過手機取得檔案的方式和桌機有些不一樣,
在桌機上,使用者有權限去存取整個硬碟或瀏覽整個目錄,
在手機上,有幾個基本的資料夾專門拿來放圖片或音樂,甚至應用程式要存取的資料會放在 特定的資料夾 內。

有寫過 .NET 的程式人員一定會知道 System.IO 類別庫,支援檔案的輸入輸出,
其中最好用的就是 File 這個類別,
例如,
要寫入文字時可以直接使用 File.WriteAllText 方法,
或是讀取檔案時可以使用 File.ReadAllText 方法。

為了防止檔案存取去影響到 UI Thread,建議撰寫時都加上 非同步,教學見上一小節

2017/7/25

Xamarin.Forms 教學系列文(二十.壹)async/await 非同步 & DisplayAlert

學習目標
  • 學會非同步寫法... 

圖形使用者介面 (GUI) 有一個特質,執行事件時都是 有順序性 的,每一件事情執行前都要等待另一件事情結束。

一開始,所有程式都會連結到一條執行緒內動作,這條執行緒也稱做 main thread、user-interface threadUI thread

但若 main thread 因為某個大量工作事件卡住,導致介面呈現 假當機 狀態,會讓使用者森氣氣的…

2017/7/19

Xamarin.Forms 教學系列文(十九.參 - 2)TableView - TableSection 隱藏 & Menu



學習目標
  • 整段 Section 隱藏和顯示的方法 
  • Table 也可以當作 Menu 使用!

接續前一小節,我們有個簡單的功能還未完成,
就是開啟 Programmer switch 開關時,才能去點選 Language 和 Platform 這兩個屬性,反之則不能點選。

要完成這個功能,我們要藉由 TableView 本身能放置多組的 TableSection 的特性,並直接隱藏或顯示整組 TableSection

然而...隱藏 TableSection 這件事 無法用 XAML 處理,需借助 C# 才能完成...


接續上一小節的範例,
但我們將 Language 和 Platform 這兩個 PickerCell,移放到一個新的 TableSection 內:

Xamarin.Forms 教學系列文(十九.參 - 1)TableView


學習目標
  • TableView 的屬性和寫法
  • 客製化 Cell

此章介紹 Xamarin.Forms 最後一個 Collection Views - TableView

TableView 通常拿來顯示 不同類型 的項目,而項目就是類別下的各屬性。
換個方式說,每個項目就是由屬性所呈現出來的 Cell

TableView 僅有四個屬性:
  • Intent - type of TableIntent
  • Root - type of TableRoot
  • RowHeight - type of int
  • HasUnevenRows - type of bool

Intent 屬性可以設定為 (也可不設定) 底下四個值,表示此 TableView 的用途是什麼:
  • Data - 用於顯示資料時
  • Form - 用於需要輸入資料時
  • Settings - 與 Form 很像,但通常會有預設值
  • Menu - 通常用於點選項目來觸發動作

Root 屬性對應的 XAML 為 TableRoot,底下會包一個或多個 TableSection,而 TableSection 底下會包一個或多個 Cell:
<TableView Intent="Settings">
    <TableRoot>
        <TableSection Title="Ring">
            <SwitchCell Text="New Voice Mail" />
                   <SwitchCell Text="New Mail" On="true" />
        </TableSection>
    </TableRoot>
</TableView>

但其實啊... TableView 與一個 用 ScrollView 包起來的 StackLayout,兩者之間沒有太大的差異,StackLayout 內也可以放置被綁定的 Visual Element。

不過,TableView 在規劃和安排要顯示的資訊或表單時,會更加的方便。

來看一個 Form 型態的 TableView:

2017/7/13

Xamarin.Forms 教學系列文(十九.貳 - 4)ListView - 長按選單 (Context Menu) & 資料刷新



學習目標
  • Context Menu - 長按或滑動出現的選單
  • IsPullToRefresh - 向下滑動時刷新資料

終於來到 ListView 最終章... 本章節將補完 ListVeiw 兩個常用的功能,一個是長按選單,另一個是下滑刷新資料

2017/7/11

Xamarin.Forms 教學系列文(十九.貳 - 3)ListView - Interactivity & MVVM





學習目標
  • ListView 在 MVVM 的實際使用

與 ListView 的互動方式有好幾種~

如果用戶點擊一個項目,ListView 會觸發一個 ItemTapped 事件,如果該項目以前沒有被選擇,也會是 ItemSelected 事件,還能針對 SelectedItem 屬性做 data binding。

ListView 還有一個 ScrollTo 方法,它允許程式捲動到 ListView 指定的項目。

互動的範例可於原文書 p.571 看,本章節重點放在 MVVM 的範例~
本章程式相當長... 請耐心服用...

2017/7/4

Xamarin.Forms 教學系列文(十九.貳 - 2)ListView - Template & Grouping



學習目標
  • Template - 自訂顯示資料格式
  • Grouping - 資料群組化顯示

本章節的程式都會用到一支稱作 NamedColor 的類別當作資料來源,NamedColor.All可以撈出 147 種顏色,程式碼附在文章最後

本章節主要在介紹 ListView 如何顯示資料~

ListView 定義了一個 ItemTemplate 屬性 (DataTemplate 類別),而 DataTemplate 使用 Cell 來協助項目的呈現

ListView 內建好幾組 Cell 可以使用:
Object
     BindableObject
        Element
            Cell
                TextCell — 單純顯示文字,可加入第二行備註行
                ImageCell — 繼承自 TextCell,可加入圖檔
                EntryCell — 可放置 Entry
                SwitchCell — 可放置  Switch
                ViewCell — 客製化呈現方式


Cell 不只在 ListView 會用到,在稍等的章節 TableView 也會出現,只是用法不太一樣
在 ListView 內最常用到的應該是 TextCell、ImageCell 和 ViewCell 

先來看 TextCell~