Estávamos conversando com um cliente no ano passado que cria dezenas de aplicativos móveis a cada ano. Eles disseram: "Não nos lembramos da última vez em que criamos um aplicativo móvel que NÃO incluía uma exibição de carrossel". Muitos de vocês expressaram sentimentos quase idênticos a nós. Portanto, temos o prazer de apresentar um novo controle
CarouselView
no Xamarin.Forms 4.4.0. Junto com isso, também temos o
IndicatorView
para exibir as páginas ou itens no carrossel. Assim como o
SwipeView
por fornecer ações contextuais a qualquer elemento em um
CollectionView
. O tema do lançamento de mover as coisas não seria completo sem a apresentação do novo suporte de animação GIF para imagens. Vamos começar logo ali.

Recursos do Xamarin.Forms 4.4
As animações GIF são uma maneira excelente e simples de adicionar animação ao seu aplicativo para obter melhores comentários do usuário, chamando a atenção para alguma ação ou detalhe. Também é ótimo para GIFs de gatos, é claro. A
Image
é tudo o que você precisa, juntamente com a nova propriedade
IsAnimationPlaying
para ativar e desativar a reprodução.
As animações serão repetidas por padrão. Para parar uma animação, defina
IsAnimationPlaying
como false.

Assim você tem animações! Isso é ideal para imagens menores, e especialmente aquelas incorporadas ao seu aplicativo. As configurações de loop na imagem GIF são respeitadas. Verifique se você está usando renderizadores rápidos no Android para obter a melhor experiência.
CarouselView e IndicatorView
Criado com o mesmo controle básico do
CollectionView
, o novo
CarouselView
simplifica a adição de carrosséis sofisticados ao seu aplicativo, independentemente de você estar rolando horizontal ou verticalmente. Assim como você obtém o
CollectionView
você obtém:
- ItensLayout
- ItemsSource
- ItemTemplate
- EmptyTemplate

<CarouselView HeightRequest="160"> <CarouselView.ItemsSource> <x:Array Type="{x:Type x:String}"> <x:String>h01.jpg</x:String> <x:String>h02.jpg</x:String> <x:String>h03.jpg</x:String> <x:String>h04.jpg</x:String> </x:Array> </CarouselView.ItemsSource> <CarouselView.ItemTemplate> <DataTemplate> <Image Source="{Binding .}"/> </DataTemplate> </CarouselView.ItemTemplate> </CarouselView>
Você também obtém algumas propriedades específicas do carrossel para controlar itens como a distância que os itens anteriores e os próximos devem aparecer.

<CarouselView PeekAreaInsets="50" ...>
Dica avançada: no exemplo acima, você também observará que os itens anteriores e seguintes são redimensionados e deslocados. Você pode conseguir isso hoje com um comportamento e fazendo as modificações de layout na rolagem. Quando enviamos o 4.5, você poderá usar estados visuais para fazer isso com mais facilidade.
Para adicionar um
IndicatorView
posicione-o onde quiser e associe-o ao
CarouselView
por nome:
<CarouselView x:Name="walletCarousel"> // implementation here </CarouselView> <IndicatorView IndicatorColor="LightGray" SelectedIndicatorColor="Black" IndicatorSize="10" HorizontalOptions="Center" IndicatorView.ItemsSourceBy="walletCarousel"/>

Para obter mais detalhes sobre todas as coisas poderosas que você pode fazer com o
CarouselView
e o
IndicatorView
, consulte a
documentação .
Nota: O NuGet
Xamarin.Forms.CarouselView (versão prévia) lançado anteriormente será arquivado e não será mais lançado. Se você estava usando esse controle, poderá remover o NuGet e atualizar seu espaço para nome do código. Trabalhamos para manter a API consistente, mas pode ser necessário ajustar algumas coisas.
GithubSwipeview
Esse controle geralmente é encontrado em uma lista de itens para permitir que o usuário deslize em qualquer direção para revelar botões de contexto para ações comuns, como editar ou excluir. Para usar esse controle, envolva-o em qualquer elemento ao qual você deseja adicionar o comportamento e especifique seus SwipeItems. Por padrão, um
SwipeItem
leva um título e um ícone, além de um comando ou manipulador de cliques. Se você deseja adicionar algo mais complexo, você pode fazer isso através de um modelo.

<SwipeView> <SwipeView.RightItems> <SwipeItems Mode="Execute"> <SwipeItem Text="Favourite" Command="{Binding Favourite}"> <SwipeItem.Icon> <FontIconSource Glyph=""/> </SwipeItem.Icon> </SwipeItem> </SwipeItems> </SwipeView.LeftItems> <!-- Swipeable content --> <Frame> // content here </Frame> </SwipeView>
A
amostra acima
e mais foram publicadas em
blog por nosso talentoso membro da equipe, Javier Suarez Ruiz.
Você também pode usar detalhes específicos da plataforma para controlar o modo de transição de furto no
Android e
iOS . Para mais detalhes sobre o
SwipeView
, consulte a
documentação .
Contribuintes
Mesmo antes da
participação massiva no Hacktoberfest , tivemos muitas contribuições fantásticas no pipeline que agora estão aparecendo no Xamarin.Forms 4.4.0.
Confira essas grandes melhorias de 34 de seus colegas desenvolvedores. Os destaques incluem:
- Use tamanhos nomeados com FontImageSource - @ tuyen-vuduc
- Escalando métodos de animação ScaleXTo e ScaleYTo - @ sthewissen
- Espaçamento entre letras - @ KSemenenko
- Alinhamento do texto do espaço reservado - @ krdmllr
Introdução ao Xamarin.Forms 4.4 hoje
Para iniciar o Xamarin.Forms 4.4, atualize ou instale a partir do seu gerenciador de pacotes NuGet favorito. A transição da 4.3.0 é suave. Se você estiver atualizando de uma versão anterior, observe que o Xamarin.Forms e o Xamarin.Essentials agora dependem do Suporte Android 28.0.0.3. Portanto, convém atualizá-las juntamente com outros pacotes usados que possam depender das bibliotecas do Suporte Android.
Certifique-se de ativar os novos recursos de visualização usando
SetFlags
se desejar usá-los. Para fazer isso globalmente em todas as plataformas da sua solução, adicione o seguinte no
App.xaml.cs
:
public App() { InitializeComponent(); Device.SetFlags(new[] { "CarouselView_Experimental", "IndicatorView_Experimental", "SwipeView_Experimental" } ); MainPage = new AppShell(); }
Estaremos assistindo ao GitHub seus comentários sobre esses controles de visualização entre agora e nossa próxima versão, 4.5, quando esperamos movê-los rapidamente para fora desse estado de visualização.