Skip to content

Instantly share code, notes, and snippets.

View matthewrdev's full-sized avatar
🧗

Matthew Robbins matthewrdev

🧗
View GitHub Profile
using System;
using System.Globalization;
namespace MyApp.il8n
{
public interface ILocalize
{
CultureInfo GetCurrentCultureInfo();
void SetLocale();
using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using Xamarin.Forms.Xaml;
using Xamarin.Forms;
namespace MyApp.il8n
{
// You exclude the 'Extension' suffix when using in Xaml markup
@matthewrdev
matthewrdev / iOS.Localise.cs
Last active April 2, 2018 13:04
iOS - Localise.cs
using System;
using System.Globalization;
using System.Threading;
using Foundation;
using MyApp.il8n;
using MyApp.iOS;
using Xamarin.Forms;
[assembly: Dependency(typeof(Localize))]
using System;
using System.Globalization;
using System.Linq;
using System.Threading;
using Java.Util;
using MyApp.Droid;
using MyApp.il8n;
using Xamarin.Forms;
[assembly: Dependency(typeof(Localize))]
using System;
namespace MyApp.Attributes
{
/// <summary>
/// Apply the design time binding context attribute to your code-behind class to inform tools of your intended runtime binding context.
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class DesignTimeBindingContextAttribute : Attribute
{
@matthewrdev
matthewrdev / AndroidEnvironment.txt
Last active August 28, 2019 01:12
Is Mono's logging cluttering up your Android apps logs? Drop this into your project to snuff out those logs!
# See: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/#Configuration
MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=32m,soft-heap-limit=512m,evacuation-threshold=80
# See: http://www.mono-project.com/docs/advanced/runtime/logging-runtime-events/#trace-levels
MONO_LOG_LEVEL=info
# See: http://www.mono-project.com/docs/advanced/runtime/logging-runtime-events/#trace-filters
MONO_LOG_MASK=gc
@matthewrdev
matthewrdev / Profiler.cs
Last active April 2, 2020 14:39
A simple and lean profiler that measures a code section using the IDisposable pattern.
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
namespace MFractor.Utilities
{
public class Profiler : IDisposable
{
readonly string Message;
@matthewrdev
matthewrdev / TableViewResizeManager.cs
Last active October 8, 2021 00:31
For cells in Xamarin.Forms apps that perform a lot of resize requests, batches and defers the resize operation to improve list view performance.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Threading;
using UIKit;
public class ResizableViewCell : ViewCell
{
@matthewrdev
matthewrdev / PeerConnectionHelper.cs
Last active November 15, 2021 23:59
Utility class to detect severed peer connections in Xamarin.Android.
/// <summary>
/// Helper class to detect when .NET objects with a Java peer object have been "severed".
/// <para/>
/// Peer objects are .NET types which implement IJavaObject , e.g. all Java.Lang.Object and Java.Lang.Throwable subclasses.
/// Instances of these types have two "halfs" a managed peer and a native peer.
/// <list type="bullet">
/// <item>The managed peer is an instance of the C# class.</item>
/// <item>The native peer is an instance of a Java class within the Android runtime VM, and the C# IJavaObject.Handle property contains a JNI global reference to the native peer.</item>
/// </list>
/// There are two types of native peers:
@matthewrdev
matthewrdev / InterceptBackButtonNavigationPageRenderer.iOS.cs
Created November 18, 2021 01:25
Intercepts the "soft" back button events from the iOS TopViewController and forwards them to the Page.OnBackButtonPressed for handling.
using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(NavigationPage), typeof(MyApp.iOS.Renderers.InterceptBackButtonNavigationPageRenderer))]