public override void ViewDidLoad() { base.ViewDidLoad(); // Setup tile controller tileController.title = "Home Controller"; tileController.scrollDirection = ACTileControllerScrollDirection.Vertical; tileController.appearance.backgroundImage = UIImage.FromBundle("Agreement.jpg"); tileController.navigationBar.ShowNavigationBar(true); tileController.navigationBar.AddLeftButton("Home", null, 50, 32, (sender, e) => { Console.WriteLine("Home button pressed"); }); tileController.navigationBar.AddRightButton("Edit", null, 50, 32, (sender, e) => { Console.WriteLine("Edit button pressed"); }); tileController.navigationBar.AddRightButton("", UIImage.FromBundle("Add"), 16, 16, (sender, e) => { Console.WriteLine("Add button pressed"); }); // Suspend updates tileController.suspendUpdates = true; // Adjust based on device var sceneSize = 4; if (iOSDevice.isPhone) { tileController.appearance.cellSize = 45f; sceneSize = 3; } else { tileController.appearance.cellSize = 50f; } // Style tiles tileController.tileAppearance.titleSize = 14f; tileController.tileAppearance.subtitleColor = ACColor.FromRGB(100, 100, 100); tileController.tileAppearance.subtitleSize = 12f; // Add new group var scenes = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Favorite Scenes", ""); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Evening", "", "", "Home"); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Go to Bed", "", "", "Home"); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Night", "", "", "Home"); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Start Work", "", "", "Home"); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Sunset", "", "", "Home"); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Wake Up", "", "", "Home"); // Add new group var accessories = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Favorite Accessories", ""); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Kitchen Eve Door", "No Response", "", "Home"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Patio Eve Humidity", "No Response", "", "Home"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Patio Eve Temp", "No Response", "", "Home"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Bedroom", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Dining Room Left", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Dining Room Right", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Bloom", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Iris", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Lightstrip", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Table Lamp", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Wicker Bottom", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Wicker Top", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Office Desk", "Off", "", "Light"); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Office Side Table", "Off", "", "Light"); // Wire-up accessories events accessories.TileTouched += (group, tile) => { switch (tile.subtitle) { case "Off": tile.subtitle = "On"; if (tile.title == "Bedroom") { // Simulate a light color tile.ChromaKeyTile(ACColor.Purple, 50, 250); } else { // Just set to white tile.appearance.background = ACColor.White; } tile.icon = UIImage.FromBundle("Brightness"); break; case "On": tile.subtitle = "Off"; tile.appearance.background = ACColor.FromRGBA(213, 213, 213, 240); tile.icon = UIImage.FromBundle("Light"); break; } }; // Restore updates tileController.suspendUpdates = false; // Display touched tile tileController.TileTouched += (group, tile) => { Console.WriteLine("Touched tile {0} in group {1}", tile.title, group.title); }; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Configure tiles var tileController = FindViewById <ACTileController>(Resource.Id.tileController); tileController.title = "Home Controller"; tileController.navigationBar.ShowNavigationBar(true); tileController.scrollDirection = ACTileControllerScrollDirection.Vertical; // Stop the tile controller from updating while we populate it tileController.suspendUpdates = true; // Display type var standardTiles = true; if (standardTiles) { // Display standard tiles tileController.appearance.backgroundImage = UIImage.FromResources(Resources, Resource.Drawable.Linen); // Add and configure the first group var group1 = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Group One", "This is a sample group."); group1.appearance.hasBackground = false; group1.autoFitTiles = true; group1.AddTile(ACTileStyle.Default, ACTileSize.Single, "Today", "", "", Resources, Resource.Drawable.CalendarDay); group1.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "Crop", "", "", Resources, Resource.Drawable.Crop); group1.AddTile(ACTileStyle.BigPicture, ACTileSize.DoubleHorizontal, "Last Image", "", "", Resources, Resource.Drawable.Arrow).appearance.titleColor = ACColor.White; group1.AddTile(ACTileStyle.DescriptionBlock, ACTileSize.Quad, "Message", "Welcome!", "We hope that you are enjoying your ActionTile View. Look around and see what all I can do!", Resources, Resource.Drawable.OpenMail); group1.AddTile(ACTileStyle.Default, ACTileSize.Single, "Map", "", "", Resources, Resource.Drawable.Marker); group1.AddTile(ACTileStyle.TopTitle, ACTileSize.Single, "Locked", "", "", Resources, Resource.Drawable.Lock); group1.AddTile(ACTileStyle.CornerIcon, ACTileSize.Single, "Images", "32", "", Resources, Resource.Drawable.FilmRoll); group1.AddTile(ACTileStyle.Default, ACTileSize.Single, "Pasteboard", "", "", Resources, Resource.Drawable.Paste); // Randomily assign a purple color to the tiles in this group with the // given brightness range group1.ChromaKeyTiles(ACColor.Purple, 50, 250); // Assign a live update action to this group group1.liveUpdateAction = new ACTileLiveUpdateGroupChromaKey(group1, ACColor.Purple, 50, 250); // Add and configure the second group var group2 = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Group Two", "This group includes several live update features."); group2.appearance.hasBackground = false; group2.autoFitTiles = true; // Add tiles to second group var photos = group2.AddTile(ACTileStyle.Default, ACTileSize.Quad, "Photos", "", "", Resources, Resource.Drawable.ManWithChild); group2.AddTile(ACTileStyle.CornerIcon, ACTileSize.DoubleHorizontal, "Flight Arrives", "2:00pm", "", Resources, Resource.Drawable.Airplane); group2.AddTile(ACTileStyle.CornerIcon, ACTileSize.Single, "Cards", "", "", Resources, Resource.Drawable.ATMCard); group2.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "Briefcase", "", "", Resources, Resource.Drawable.Breifcase); var wakeup = group2.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "Wake-up", "6:30am", "", Resources, Resource.Drawable.Brightness); group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "This Month", "", "", Resources, Resource.Drawable.CalendarMonth); var chat = group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "Chat", "4", "", Resources, Resource.Drawable.Chat); var mail = group2.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "New Messages", "12", "", Resources, Resource.Drawable.ClosedMail); group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "Portfolio", "", "", Resources, Resource.Drawable.Portfolio); group2.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "Files", "142", "", Resources, Resource.Drawable.Folder); group2.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "System Settings", "", "", Resources, Resource.Drawable.Gear); group2.AddTile(ACTileStyle.BigPicture, ACTileSize.Quad, "The Bay Bridge", "", "", Resources, Resource.Drawable.Bridge); group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "Encrypt", "", "", Resources, Resource.Drawable.Key); group2.AddTile(ACTileStyle.BigPicture, ACTileSize.Single, "News", "", "", Resources, Resource.Drawable.Fountain); var systemState = group2.AddTile(ACTileStyle.DescriptionBlock, ACTileSize.Quad, "Links", "System Offline", "No remote links are currently active on this device. Tap tile to update...", Resources, Resource.Drawable.Link); group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "You are here", "", "", Resources, Resource.Drawable.Marker); group2.AddTile(ACTileStyle.Default, ACTileSize.Single, "Recording", "", "", Resources, Resource.Drawable.Microphone); // Attach live update events to group 2 tiles photos.liveUpdateAction = new ACTileLiveUpdateTileImages(photos, new UIImage[] { UIImage.FromResources(Resources, Resource.Drawable.Arrow), UIImage.FromResources(Resources, Resource.Drawable.Boat), UIImage.FromResources(Resources, Resource.Drawable.Bridge), UIImage.FromResources(Resources, Resource.Drawable.Fountain), UIImage.FromResources(Resources, Resource.Drawable.ManWithChild) }); mail.liveUpdateAction = new ACTileLiveUpdateTileImages(mail, new UIImage[] { UIImage.FromResources(Resources, Resource.Drawable.OpenMail), UIImage.FromResources(Resources, Resource.Drawable.ClosedMail) }); wakeup.liveUpdateAction = new ACTileLiveUpdateTileColor(wakeup, new ACColor[] { ACColor.Red, ACColor.ActionYellowOrange }); group2.liveUpdateAction = new ACTileLiveUpdateGroupColorRandom(group2, new ACColor[] { ACColor.ActionBrightOrange, ACColor.ActionRedOrange, ACColor.Red, ACColor.ActionBrickRed }); // Add multiple live updates to a given tile var sequence = new ACTileLiveUpdateTileSequence(systemState); sequence.Add(new ACTileLiveUpdateTileText(systemState, new string[] { "System Test", "System Offline" }, new string[] { "Testing...", "Links" }, new string[] { "Runing connectivity tests on device. Please standby...", "No remote links are currently active on this device. Tap tile to update..." })); sequence.Add(new ACTileLiveUpdateTileChromaKey(systemState, ACColor.Purple, 100, 250)); systemState.liveUpdateAction = sequence; // Add and configure the third group var group3 = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Group Three", ""); group3.autoFitTiles = true; // Add tiles to third group group3.AddTile(ACTileStyle.Default, ACTileSize.Quad, "Airplane Mode", "OFF", "", Resources, Resource.Drawable.Airplane); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "Let's Chat", "", "", Resources, Resource.Drawable.Chat); var cloud = group3.AddTile(ACTileStyle.DescriptionBlock, ACTileSize.DoubleHorizontal, "Cloud", "", "There are 2 new files in your shared cloud", Resources, Resource.Drawable.Cloud); group3.AddTile(ACTileStyle.Default, ACTileSize.Quad, "On The Air", "", "", Resources, Resource.Drawable.RadioTower); group3.AddTile(ACTileStyle.Default, ACTileSize.Single, "Tags", "", "", Resources, Resource.Drawable.Tag); group3.AddTile(ACTileStyle.Default, ACTileSize.Single, "Wallet", "", "", Resources, Resource.Drawable.Wallet); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "TV", "", "", Resources, Resource.Drawable.TV); group3.AddTile(ACTileStyle.Default, ACTileSize.Single, "Movies", "", "", Resources, Resource.Drawable.Movie); group3.AddTile(ACTileStyle.Default, ACTileSize.Single, "Microphone", "", "", Resources, Resource.Drawable.Microphone); group3.AddTile(ACTileStyle.CornerIcon, ACTileSize.Quad, "Current Time", "12:30pm", "", Resources, Resource.Drawable.Clock); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "Contrast", "", "", Resources, Resource.Drawable.Contrast); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "System Check-Up", "", "", Resources, Resource.Drawable.Checkmark); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "This Week", "", "", Resources, Resource.Drawable.CalendarWeek); var pictureStream = group3.AddTile(ACTileStyle.BigPicture, ACTileSize.Quad, "PictureStream", "42", "", Resources, Resource.Drawable.Boat); group3.AddTile(ACTileStyle.Default, ACTileSize.Single, "Key", "", "", Resources, Resource.Drawable.Key); group3.AddTile(ACTileStyle.Default, ACTileSize.DoubleHorizontal, "Music", "", "", Resources, Resource.Drawable.Music); // Add live updates to group pictureStream.liveUpdateAction = new ACTileLiveUpdateTileImages(pictureStream, new UIImage[] { UIImage.FromResources(Resources, Resource.Drawable.ManWithChild), UIImage.FromResources(Resources, Resource.Drawable.Bridge), UIImage.FromResources(Resources, Resource.Drawable.Arrow), UIImage.FromResources(Resources, Resource.Drawable.Fountain), UIImage.FromResources(Resources, Resource.Drawable.Boat) }); group3.liveUpdateAction = new ACTileLiveUpdateGroupColor(group3, new ACColor[] { ACColor.ActionBrickRed, ACColor.ActionCyan, ACColor.ActionDustyRose, ACColor.ActionGrape, ACColor.ActionGreenTea, ACColor.ActionLavendar, ACColor.ActionNavyBlue, ACColor.ActionOrange, ACColor.ActionPink, ACColor.ActionPinkGrapefruit, ACColor.ActionRedOrange, ACColor.ActionSkyBlue, ACColor.ActionTeal, ACColor.ActionYellow, ACColor.ActionYellowGreen, ACColor.ActionYellowOrange }); // Randomily assign a green color to the tiles in this group with the // given brightness range group3.ChromaKeyTiles(ACColor.ActionYellowGreen, 50, 250); // Add and configure the fourth group var group4 = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Group Four", ""); group4.autoFitTiles = true; // Add tiles to fourth group group4.AddTile(ACTileStyle.Default, ACTileSize.Single, "Monitor", "", "", Resources, Resource.Drawable.Widescreen); group4.AddTile(ACTileStyle.Default, ACTileSize.DoubleVertical, "Desktop", "", "", Resources, Resource.Drawable.Arrow); group4.AddTile(ACTileStyle.DescriptionBlock, ACTileSize.DoubleHorizontal, "System Tools", "", "It's been 4 days since your last scan.", Resources, Resource.Drawable.Tools); group4.AddTile(ACTileStyle.BigPicture, ACTileSize.Quad, "Feeds", "15", "", Resources, Resource.Drawable.Fountain); group4.AddTile(ACTileStyle.Default, ACTileSize.Single, "locate", "", "", Resources, Resource.Drawable.Scanner); group4.AddTile(ACTileStyle.BigPicture, ACTileSize.Single, "", "", "", Resources, Resource.Drawable.Boat); group4.AddTile(ACTileStyle.Default, ACTileSize.Single, "Radio", "", "", Resources, Resource.Drawable.Radio); group4.AddTile(ACTileStyle.Default, ACTileSize.Single, "Labels", "", "", Resources, Resource.Drawable.Tag); group4.AddTile(ACTileStyle.Default, ACTileSize.Single, "Password", "", "", Resources, Resource.Drawable.Key); // Randomily assign a green color to the tiles in this group with the // given brightness range group4.ChromaKeyTiles(ACColor.ActionSkyBlue, 50, 250); } else { // Display as HomeKit style tileController.appearance.backgroundImage = UIImage.FromResources(Resources, Resource.Drawable.Agreement); // Style tiles var sceneSize = 4; tileController.appearance.cellSize = 50f; tileController.tileAppearance.titleSize = 14f; tileController.tileAppearance.subtitleColor = ACColor.FromRGB(100, 100, 100); tileController.tileAppearance.subtitleSize = 12f; // Add new group var scenes = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Favorite Scenes", ""); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Evening", "", "", Resources, Resource.Drawable.House); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Go to Bed", "", "", Resources, Resource.Drawable.House); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Night", "", "", Resources, Resource.Drawable.House); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Start Work", "", "", Resources, Resource.Drawable.House); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Sunset", "", "", Resources, Resource.Drawable.House); scenes.AddCustomSizedTile(1, sceneSize, ACTileStyle.Scene, "Wake Up", "", "", Resources, Resource.Drawable.House); // Add new group var accessories = tileController.AddGroup(ACTileGroupType.ExpandingGroup, "Favorite Accessories", ""); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Kitchen Eve Door", "No Response", "", Resources, Resource.Drawable.House); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Patio Eve Humidity", "No Response", "", Resources, Resource.Drawable.House); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Patio Eve Temp", "No Response", "", Resources, Resource.Drawable.House); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Bedroom", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Dining Room Left", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Dining Room Right", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Bloom", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Iris", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Lightstrip", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Table Lamp", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Wicker Bottom", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Living Wicker Top", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Office Desk", "Off", "", Resources, Resource.Drawable.LightOff); accessories.AddTile(ACTileStyle.Accessory, ACTileSize.Quad, "Office Side Table", "Off", "", Resources, Resource.Drawable.LightOff); // Wire-up accessories events accessories.TileTouched += (group, tile) => { switch (tile.subtitle) { case "Off": tile.subtitle = "On"; if (tile.title == "Bedroom") { // Simulate a light color tile.ChromaKeyTile(ACColor.Purple, 50, 250); } else { // Just set to white tile.appearance.background = ACColor.White; } tile.icon = UIImage.FromResources(Resources, Resource.Drawable.LightOn); break; case "On": tile.subtitle = "Off"; tile.appearance.background = ACColor.FromRGBA(213, 213, 213, 240); tile.icon = UIImage.FromResources(Resources, Resource.Drawable.LightOff); break; } }; } // Allow update and automatically refresh the screen tileController.suspendUpdates = false; // Tell the controller to automatically update itself tileController.liveUpdate = standardTiles; // Display touched tile tileController.TileTouched += (group, tile) => { Console.WriteLine("Touched tile {0} in group {1}", tile.title, group.title); }; }