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を使う

P-07Cを買った

本当はP-01Dも買ったはずだったんだ・・・だったんだ・・・

昨晩、いつも通りTwitter見てたらdocomoに2台MNPで10万前後のキャッシュバックが見えた。
docomoが現在キャンペーンで「ドコモの家族セット割」というのをやっていて複数台同時購入で端末それぞれから10,500円引してくれる。
本体価格が割引額を下回る場合、キャッシュバックしてくれる店舗があるのでそれを利用する。

ちなみにTLみててキャッシュバックの額が多かったのがP-01DとP-07Cの2機種

  続きを読む