こんにちは。エクセルソフトの田淵です。
2015/3/9 に NuGet Gallery | Xamarin.Forms 1.4.0.6341 がリリースされましたので、アップデート内容を纏めます。
1.3 系のアップデート内容は Xamarin.Forms 1.3 系の各アップデート内容について に纏めてありますので、併せてご参照ください。
Xamarin.Forms 1.4.0
Xamarin.Forms 1.4.0 Released - Xamarin Forums
NuGet Gallery | Xamarin.Forms 1.4.0.6341
変更点
Important Notes
これは機能リリースです。パッチバージョンとは異なり、マイナーバージョンには新しい API が含まれます。
新 API
ScrollView
ScrollView の現在のスクロールオフセットを検出することが可能になりました。これらは読み取り専用のバインド可能プロパティです。
public double ScrollX { get; } public double ScrollY { get; }
ScrollView にスクロールさせる方法もあります。
public Task ScrollToAsync (double x, double y, bool animated); public Task ScrollToAsync (Element element, bool animated);
ScrollToAsync
に渡された Element
は ScrollView
の子孫要素でなければなりませんが、直接の子である必要はありません。
また、スクロールを監視するためにバインディングを使用したくない人のために、ScrollX
や ScrollY
が更新された際に発火する Scrolled
イベントがあります。
public event EventHandler<ScrolledEventArgs> Scrolled; public class ScrolledEventArgs : EventArgs { public double ScrollX { get; } = 0; public double ScrollY { get; } = 0; }
ScrollView はもはやフロントエンドとレンダラーの間で通信するために、任意の内部APIを使用していません。ScrollView に明示的に実装された IScrollViewController
は、自身や他のイベントをトリガーするために使用できます。
ListView
Separator の機能拡張
ListView でセパレーターを有効/無効にできるようになりました。これは、バインド可能な SeparatorVisibility
プロパティを介して設定することができます。
public SeparatorVisibility SeparatorVisibility { get; set; } = SeparatorVisibility.Default; public enum SeparatorVisibility { Default = 0, None = 1, }
現時点ではすべてのプラットフォームがその UX の一部としてセパレーターを持っているわけではないので Always
なオプションはありません。(すみません。訳違うかも) しかしそれは Windows プラットフォーム用のパラダイムになり、将来的にこれを追加することを検討しています。
ListView のセパレーターに Color
を適用できます。
public Color SeparatorColor { get; set; } = Color.Default;
デフォルト値は Color.Default
で、何もしなければ 1.3.0 実装から変わらずに機能します。 RGBA値がサポートされています。この関数は SeparatorVisibility
が NONE
に設定されていると何もしません。ListView
をロードした後に Android 上でこれらのプロパティのいずれかを設定すると、大規模なパフォーマンスペナルティが生じますのでご注意ください。
Header/Footer
ListView
のヘッダーとフッターの両方も成長しました。これらは、簡単な使用方法から、より複雑な MVVM スタイルの使用方法までのすべてで使用可能な一連のプロパティを介して管理されています。
public object Header { get; set; } = null; public DataTemplate HeaderTemplate { get; set; } = null; public object Footer { get; set; } = null; public DataTemplate FooterTemplate { get; set; } = null;
ヘッダーまたはフッターは View に直接設定できるので、テンプレートのプロパティで Null のままな場合がありますのでに注意が必要です。これはヘッダー/フッターを直接レンダラーによって消費されるようになります。これらのプロパティのすべてがバインド可能です。
Pull To Refresh
PullToRefresh が現在のすべてのターゲットプラットフォーム上の ListView で有効になりました。PullToRefreshを有効にするにはあなたのアプリケーションに単純に IsPullToRefreshEnabled
を true に設定し、正しいイベントに応答することを確認してください。これは、将来的に完全な API を追加した独立した View が追加されるまでの「簡易的な」API であるのことに注意してください。
public event EventHandler Refreshing; public bool IsPullToRefreshEnabled { get; set; } = false; public bool IsRefreshing { get; set; } = false; public ICommand RefreshCommand { get; set; } = null; public void BeginRefresh (); public void EndRefresh ();
ユーザーが PullToRefresh
をトリガーするとコマンドが Refreshed
エベントを放出します。IsRefreshing
が true にセットされます。ICommand.CanExecute
プロパティが尊重されます。ユーザーは refresh 状態を終了させるために EndRefresh
か IsRefreshing
を false にアサインする必要があります。
これらの機能のすべてのパラメーターは明示的に ListView に実装された IListViewController
インタフェースを介して公開されています。これは、これらの機能を Custom Renderer で変更したい方を支援します。
プラットフォームの idiom が生じないように PullToRefresh の Windows Phone の実装はカスタムな実装です。将来的に Windows プラットフォームで、デフォルトで PullToRefresh のメソッドを追加することを決定した場合には、ポートしていきたいと考えています。
田淵注釈: PullToRefresh については P3PPP さん の [Xamarin.Forms 1.4.0-pre1] ListViewの新機能 "Pull To Refresh" - Qiita が詳しいです。
Forms.Application
Application
クラスは、モーダルナビゲーションに対応するための 4 つの新しいイベントを公開します。
public event EventHandler<ModalPushedEventArgs> ModalPushed; public event EventHandler<ModalPoppedEventArgs> ModalPopped; public event EventHandler<ModalPushingEventArgs> ModalPushing; public event EventHandler<ModalPoppingEventArgs> ModalPopping;
ModalPoppingEventArgs
はそれが true にセットされるとポップイベントをキャンセルし、アプリケーションがバックグラウンドに入る(オペレーティングシステムには unhandled back イベントが通知されます) Cancel
プロパティを含みます。
この機能を実装するために、すべての Pre-Application のメソッドは、ルートページ Parent
として設定されているデフォルトの Application
を作成するために更新されました。いくつかのエッジケースで問題を引き起こすことがあれば、バグレポートを提出してください。可能な場合は、新しい LoadApplication の初期化方法論も提案してください。
Application は現在、Properties
辞書を手動で IsolatedFileStore に強制的に保存する方法があります。This is to allow users to save their properties when it makes sense for them rather than risk them not getting serialized out due to a crash/being killed by the OS.(すみません。訳不明…)
public Task SavePropertiesAsync ()
OpenGLRenderer
Android では OpenGLRenderer
は一貫性を保つために OpenGLViewRenderer
に名前が変更されました。
その他の機能
- WebView now correctly supports javascript out of the box on Windows Phone 8.0
です。
Xamarin 気になった方は
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
以上です。