Histórico da Página
Visão Geral
Painel | ||
---|---|---|
| ||
O Xamarin.Forms geralmente é usado para desenvolver aplicativos multiplataforma nativos. Basicamente, o Xamarin.Forms é uma camada de abstração que permite a interação do código compartilhado com o código da plataforma subjacente do Android, iOS e Windows. Usando o Xamarin.Forms, um desenvolvedor de aplicativo móvel multiplataforma pode economizar tempo de desenvolvimento escrevendo toda a lógica de negócios em um único idioma. Quase 90% do código necessário para desenvolver um aplicativo é compartilhado entre plataformas, permitindo que você obtenha desempenho nativo e a mesma aparência em cada uma delas. |
Painel | ||
---|---|---|
| ||
Como você sabe, a interface do usuário do aplicativo multiplataforma .NET é popularmente conhecida como .NET MAUI. Ele é usado para criar aplicativos multiplataforma nativos com .NET para Android, iOS, macOS e Windows. O .NET MAUI é construído sobre o Xamarin.Forms, evoluindo a plataforma para o próximo nível. Com o .NET MAUI, a Microsoft inicia uma jornada para criar uma plataforma .NET unificada como uma única classe base para .NET Core e Mono/Xamarin juntos. |
Painel | ||
---|---|---|
| ||
Como o .NET MAUI é uma evolução do Xamarin.Forms, eles têm a maioria de seus recursos em comum. É possível obter quase tudo que o Xamarin possui no .NET MAUI, como controles, layouts, Shell, gestures, templates e APIs multiplataforma para recursos de dispositivo. |
Não é necessário reescrever os aplicativos Xamarin.Forms para migra-los para o .NET MAUI. No entanto, será preciso fazer algumas alterações de código em cada aplicativo. Da mesma forma, é possível utilizar os recursos de projeto único sem mesclar todos os projetos do Xamarin.Forms em um projeto. Para iniciar a migração, siga os seguintes passos:
- Passo 1
- Passo 2
- Passo 3
- Passo 4
Criando uma Nova Solução
Visão geral
Para migrar o aplicativo Xamarin.Forms, crie uma nova solução MAUI.
Informaçõeswarning |
---|
Certifique-se de que o novo nome da solução corresponda ao namespace raiz do aplicativo existente. Isso garantirá o mínimo de conflito possível ao importar os componentes existentes. |
...
Expandir | ||||
---|---|---|---|---|
| ||||
| ||||
Aviso |
...
|
Exibir filhos |
---|
Visual Studio 2022
Criar um novo projeto com o modelo padrão .NET MAUI App.
...
- Copie as fontes do aplicativo Xamarin.Forms existente para a pasta
Resources\Fonts
em seu projeto MAUI.
- Certifique-se de que a propriedade "Build Action" esteja definida como MauiFont:
Atualize o arquivo
MauiProgram.cs
para incluir as fontes migradas:Bloco de código language c# theme RDark title Código public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>() .ConfigureEffects( effects => { }) .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("NunitoSans-Bold.ttf", "NunitoSansBold"); fonts.AddFont("NunitoSans-ExtraLight.ttf", "NunitoSansExtraLight"); fonts.AddFont("NunitoSans-Regular.ttf", "NunitoSansRegular"); fonts.AddFont("Nunito-SemiBold.ttf", "NunitoSemiBold"); }) .UseMauiCommunityToolkit(); return builder.Build(); } }
...
- Copie as fontes do aplicativo Xamarin.Forms existente para a pasta
Resources\Images
em seu projeto MAUI.
- Certifique-se de que a propriedade "Build Action" esteja definida como MauiImage:
Controles Personalizados
O .NET MAUI Entry é um controle de entrada de texto, que implementa a interface IEntry. No iOS, o EntryHandler mapeia o Entry para o controle nativo UITextField. No Android, o Entry é mapeado para um AppCompatEditText, e no Windows o Entry é mapeado para um TextBox, como é mostrado na figura abaixo:
...
- Crie um arquivo correspondente ao controle na pasta de sua plataforma:
...
Altere os namesapces correspondentes e remova o assembly ExportRenderer:
Bloco de código language c# theme RDark title Exemplo using Android.Content; using Microsoft.Maui.Controls.HandlersCompatibility.Platform.CompatibilityAndroid; using Microsoft.Maui.Controls.Platform.Compatibility; //[assembly: ExportRenderer(typeof(ShellRMSCustomEntry), typeof(RMSBadgeShellRendererRMSCustomEntryRenderer))] namespace MinhaQualidadeRMLib.Android.Renderers { public class RMSBadgeShellRendererRMSCustomEntryRenderer : ShellRendererEntryRenderer { public RMSBadgeShellRendererRMSCustomEntryRenderer(Context context) : base(context) { } protected override IShellItemRenderervoid CreateShellItemRenderer(ShellItem shellItem) =>OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); new RMSBadgeShellItemRenderer(thisControl?.SetBackgroundColor(global::Android.Graphics.Color.Transparent); } } }
Inclua o trecho de código a seguir no arquivo MauiProgram.cs (linha 13-19):
Bloco de código language c# theme RDark title Código linenumbers true using CommunityToolkit.Maui; using Microsoft.Maui.Controls.Compatibility.Hosting; using MinhaQualidadeRMLib.Android.Renderers; using RMLib.Custom; namespace MinhaQualidade; public static class MauiProgram { public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder.UseMauiApp<App>() .UseMauiCompatibility() .ConfigureMauiHandlers(handlers => { #if ANDROID handlers.AddCompatibilityRenderer(typeof(ShellRMSCustomEntry), typeof(RMSBadgeShellRendererRMSCustomEntryRenderer)); #endif }) .ConfigureEffects(effects => { }) .ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("NunitoSans-Bold.ttf", "NunitoSansBold"); fonts.AddFont("NunitoSans-ExtraLight.ttf", "NunitoSansExtraLight"); fonts.AddFont("NunitoSans-Regular.ttf", "NunitoSansRegular"); fonts.AddFont("Nunito-SemiBold.ttf", "NunitoSemiBold"); }) .UseMauiCommunityToolkit(); return builder.Build(); } }
...