XamarinでAndroidアプリをフルスクリーンで表示させる

Xamarin.Nativeの場合

MainActivity.csに以下を追加

var systemUiFlags = SystemUiFlags.LayoutStable
			| SystemUiFlags.LayoutHideNavigation
			| SystemUiFlags.LayoutFullscreen
			| SystemUiFlags.HideNavigation
			| SystemUiFlags.Fullscreen
			| SystemUiFlags.ImmersiveSticky;
Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(int)systemUiFlags;

Xamarin.Formsの場合

Android 4.4以下はNativeと同じでいいんですけど、Android 5以降はなぜかステータスバーの内容だけ消えて表示領域が取り残される謎状態になります。

対応としてはbase.OnCreateのあとに以下を追加します。

	if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
	{
		this.Window.AddFlags(WindowManagerFlags.Fullscreen);
		this.Window.AddFlags(WindowManagerFlags.KeepScreenOn);
	}

OnCreate全体を見るとこんな感じ

protected override void OnCreate(Bundle bundle)
{
	base.OnCreate(bundle);

	if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
	{
		this.Window.AddFlags(WindowManagerFlags.Fullscreen);
		this.Window.AddFlags(WindowManagerFlags.KeepScreenOn);
	}

	global::Xamarin.Forms.Forms.Init(this, bundle);
	LoadApplication(new App());

	var systemUiFlags = SystemUiFlags.LayoutStable
				| SystemUiFlags.LayoutHideNavigation
				| SystemUiFlags.LayoutFullscreen
				| SystemUiFlags.HideNavigation
				| SystemUiFlags.Fullscreen
				| SystemUiFlags.ImmersiveSticky;
	Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(int)systemUiFlags;
}

Androidで横固定にする(回転あり)

[Activity (Label = "XamarinNativeApp5.Android", MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.SensorLandscape)]

ScreenOrientation = ScreenOrientation.SensorLandscapeを指定する。
ScreenOrientation.Landscapeだと片方の横固定にしかならず、反対側の横にはならない。

ユーザーの画面回転に依存させるならScreenOrientation.UserLandscapeを使う

【Xamarin】Visual Studio 2017でiOSのビルドを行うまでのメモ

環境

  • MacBook Pro (Retine, 13-inch, Early 2013)
    macOS Sierra(クリーンインストール)、Core i5、RAM 8GB
  • VAIO Z (2015)
    Windows 10 Pro build 1703 (Creators Update)
    Core i5、RAM 16GB
    Visual Studio Enterprise 2017 Version 15.1

手順

  1. Macのシステム環境設定から共有を選ぶ。
  2. リモートログインに☑を入れてsshログインに必要なアカウントとIPアドレスをメモ。
  3. MacにXamarin Studioをダウンロードしてインストールする。
    https://www.xamarin.com/download-it
  4. Xamarin Studioのインストールが完了するとXcodeのインストールに誘導されるので従いApp Storeからダウンロードしてインストールする。
  5. Xcodeのインストールが終わったら一度起動してライセンスに同意する。
  6. Xamarin Studioを起動して安定版の更新を行う。
    (ベータやアルファやってもいいけど何かあった時に自力で解決出来る人のみ)
  7. Windows側でVisual Studioから新規CrossPlatformプロジェクトを作る。
  8. [ツール]→[オプション]→[Xamarin]→[iOSの設定]→[Xamarin Mac Agentの検索]
  9. 用意したMacを選択(出てこないなら2でメモったIPアドレスとアカウントで接続)
    パスワード要求されたらMacにログインする時のやつを入力
  10. スタートアッププロジェクトをiOSにしてデバッグデバイスを選択してビルド!

繋がらない時

  • SSH キーが作れないって言われる
    Mac側で別のユーザーを作って試してみて。
  • The root assemblyうんたらかんたらiOS.exe conflicts with another assemblyって言われる
    Visual StudioかXamarin Studioのバージョンが古いかも!
    もしくはXamarin Studioが安定版じゃないかも!
    確認してプロジェクト作り直してみて。
    >The root assembly conflicts with another assembly

JXUGC #13 東京 緊急開催 Xamarin のすべて!でLTしました。

昨日行われた「JXUGC #13 東京 緊急開催 Xamarin のすべて!」でLTしました。
スライドは以下に置いておくのでDLするなり好きにしてください。
あと何故かトリでした。

タイムテーブル上は「Xamarin A or B」というタイトルでしたが自分の番が来る30分前ぐらいにタイトル変えましたというか決まりました。(A or Bは仮だった)

Xamarin.FormsのImageメモ

1.XAML


<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms&quot; xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml&quot; x:Class="TwitterIconGenerator.Home">
<ContentPage.Content>
<Image Source="https://pbs.twimg.com/profile_images/705804143575740416/49DlRuRd.jpg&quot; />
</ContentPage.Content>
</ContentPage>

Display

続きを読む

ティラノスクリプトをXamarin.Formsで動かす(Android編)

ts_logo.png

ティラノスクリプトをAndroid上で再生させるにはいくつか方法があって、公式が案内してるのはPhoneGapを使う方法。
PhoneGapの他に、Android SDK、Android Studio、NodeJSをインストールする必要があるみたい。
PhoneGapやAndroid StudioでAndroidアプリを開発する予定が現状ないので余計なインストールはディスク容量食うだけなので避けたい。

Xamarin使ってるからXamarinでやればいいじゃんっていうのが今回の動機だけどだいぶハマってしまった…。

続きを読む

Xamarin.FormsのXAMLでクラス名変更のリファクタリングが不完全

新しいファイルの追加で「Forms ContentPage XAML」を選択。

この時、名前をHogeとする。

スクリーンショット 2015-06-14 2.16.15

その後HogeクラスをFugaクラスに変更するためにリファクタリングから名前の変更を選択し、Fugaに変更する。

スクリーンショット 2015-06-14 2.17.31

スクリーンショット 2015-06-14 2.18.20そうすると、変更出来たかのように見えるが、エラーが出ている。

スクリーンショット 2015-06-14 2.20.50これはxamlファイル側のx:Classが変更前のままになっているからなので、x:Classも[namespace].[class name]に変更する。

Xamarin.FormsのNavigationBarの色を変える

Xamarin.FormsでNavigationPageを使う場合に、NavigationBarの色の変え方が調べても見つからなかったのでメモ。

Appクラスのコンストラクタに以下の様に記載するだけ。

public App ()
{
      var nav = new NavigationPage (new Home ());
      nav.BarBackgroundColor = Color.FromRgb (193, 50, 142);
      nav.BarTextColor = Color.White;
      MainPage = nav;
}

ページごとに変更する方法は分かんないけど多分そんなことしないよね…?