Windows10-development-adaptive-code
Windows 10開発-アダプティブコード
この章では、Windows 10でサポートされるさまざまなデバイスへのアプリケーションの採用について説明します。 UIと、UWPアプリケーションで使用されるすべてのトリック、テクニック、およびコントロールの採用については、既に学習しました。
次に、コードの採用について学習します。なぜなら、
- アプリケーションコードはすべてのデバイスで同じではありません。
- 特にXboxで使用されるAPIは、モバイルデバイスでは使用できません。 同じことがHoloLensなどにも当てはまります。
コードを書く
Windows 10では、C ++、C#、Visual Basic、またはJavaScriptを使用して、Visual StudioでUWPアプリケーションを実装できます。
- C#とVisual Basicを使用すると、UI設計にXAMLを使用できます。
- C ++では、XAMLを使用する代わりにDirectXを使用できます。
- JavaScriptの場合、クロスプラットフォームWeb標準であるプレゼンテーションレイヤーにHTMLを使用できます。
Windows Core APIは、コードとUIに必要なほとんどの機能を含むすべてのデバイスに対して同じ方法で実行されます。 ただし、特定のデバイスファミリに合わせて調整されたコードとUIの場合は、適応コードと適応UIを使用する必要があります。
ターゲットデバイスファミリによって実装されていないAPIの呼び出し-
UIはさまざまな画面に簡単に適応しますが、さまざまなデバイスファミリにはさまざまな画面サイズがあるだけでなく、それ以上の機能があります。
- たとえば、携帯電話にはBackやCameraなどのハードウェアボタンがありますが、PCなどの他のデバイスでは使用できない場合があります。
- 既定では、コアAPIにはほとんどの機能が含まれており、すべてのデバイスで機能しますが、外部アセンブリと同様にUWPアプリケーションで拡張SDKを参照することでデバイス固有の機能を使用できます。
アプリケーションに必要な特定の拡張SDKを追加するには、以下の手順に従ってください-
- 拡張機能の追加は、プロジェクト参照を追加するのと同じくらい簡単です。
- これで、リストから任意の拡張SDKを追加できます。これには、デスクトップ拡張、IoT拡張、モバイル拡張などが含まれます。
デスクトップとモバイルの拡張機能は、最も一般的な2つのプラットフォーム拡張機能SDKです。 たとえば、モバイル拡張機能は、ハードウェアカメラボタンを使用するために必要なAPIを有効にします。
デバイスの機能を確認するには、 Windows.Foundation.Metadata.ApiInformation クラスメソッドを使用します。このメソッドは、現在のデバイスでタイプがサポートされている場合にブール出力を返します。 たとえば、Windowsアプリで次のようなコードでカメラボタンを使用できるようにすることができます-
電話カメラボタンコードは、デバイスでMobile Extension SDKが有効になっている場合にのみ実行されます。 同様に、以下に示すように、 IsTypePresent の代わりに IsEventPresent 、 IsMethodPresent 、 IsPropertyPresent を使用して、現在のAPIバージョンの特定のイベント、メソッド、またはプロパティを確認することもできます。
UWPのWin32 API
C ++/CXで記述されたUniversal Widows Platform(UWP)アプリケーションまたはWindowsランタイムコンポーネントは、現在UWPの一部でもあるWin32 APIにアクセスできます。 すべてのWindows 10デバイスファミリは、アプリケーションを Windowsapp.lib とリンクすることにより、Win32 APIを実装できます。
アプリケーションがデスクトップと電話の両方をターゲットとする簡単な例を見てみましょう。 したがって、アプリケーションをデスクトップで実行すると、ステータスバーは表示されませんが、同じアプリケーションを電話で実行すると、ステータスバーが表示されます。
以下に、さまざまなコントロールが追加されたXAMLコードを示します。
以下に、さまざまなイベントのC#実装を示します。
上記のコードがコンパイルされ、モバイルで実行されると、次のウィンドウが表示されます。
画像に示すように、チェックボックスを使用してステータスバーの背景色を変更できます。
ステータスバーを非表示にすることもできます。
これで、デスクトップデバイスで同じアプリケーションを実行すると、ステータスバーとステータスバーに固有のチェックボックスが表示されていない次のウィンドウが表示されます。