Xamarin.Forms Facebook
Hello, Facebook is the one of the most used social media application and today i am going to show you how to make Facebook design with Xamarin.Forms. Lets start the coding(Create a blank Xamarin.Forms application).
When we open the Facebook, We see a LoginPage. Firstly, I tried to do Login Page design so i created a page. I added the StackLayout to the page and inside of the StackLayout as in the design i added the entries and buttons. Design of the Login Page, I think it is easy.
<StackLayout> <Image HeightRequest="250" WidthRequest="250" Source="fblogin.JPG" Aspect="AspectFill"/> <Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <custom:CustomEntry Placeholder="Telefon numarası veya e-posta" Grid.Row="0"/> <custom:CustomEntry Placeholder="Şifre" Grid.Row="1"/> <Button Text="Giriş Yap" Grid.Row="2" TextColor="White" Clicked="ButtonLogin_Clicked" BackgroundColor="#1877F2"/> <Label Text="Şifreni mi Unuttun?" Grid.Row="3" VerticalOptions="Center" Style="{StaticResource labelPasswords}"/> <Label Text="Geri" Grid.Row="4" VerticalOptions="Start" Style="{StaticResource labelPasswords}"/> <StackLayout Orientation="Horizontal" Grid.Row="5" VerticalOptions="Center" HorizontalOptions="Center"> <BoxView Style="{StaticResource boxViewLine}"/> <Label Text="VEYA" TextColor="Black"/> <BoxView Style="{StaticResource boxViewLine}"/> </StackLayout> <Button Text="Yeni Hesap Oluştur" Grid.Row="6" TextColor="#1877F2" BackgroundColor="#E6F2FF"/> </Grid> </StackLayout>
After the Login Page design, I started the make Home Page design. Before the start Home Page, i see that this page must be a Tabbed Page. So I created a tabbed page but this tabbed page is not that i want so i should write Custom Tabbed Page. In the internet, I made researches and i found a article can help me to make a tabbed page which i want. For the article click here.
After the creating Tabbed Page, I started make Home Page design and i added the ScrollView. In the Home Page design, There are three parts and these are titleview in the top, story view and view which has the posts. I started the make this parts with orderly.
<ScrollView VerticalOptions="Fill"> <StackLayout> <!--Title--> <Grid BackgroundColor="White"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid Grid.Row="0" Margin="10,0,10,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <circleimage:CircleImage Source="ebubekir.jpg" VerticalOptions="Center" HorizontalOptions="Start" Grid.Column="0" WidthRequest="40" HeightRequest="40" Aspect="AspectFit"/> <Button Text="Ne Düşünüyorsun?" Style="{StaticResource Buttons}" Grid.Column="1"/> </Grid> <BoxView HorizontalOptions="FillAndExpand" HeightRequest="0.5" Color="#767C83" Grid.Row="1"/> <Grid Grid.Row="2" VerticalOptions="Center" HorizontalOptions="Center"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Button Text="Canlı" ImageSource="camera" BackgroundColor="White" Grid.Column="0"/> <Button Text="Fotoğraf" ImageSource="picture" BackgroundColor="White" Grid.Column="1"/> <Button Text="Yerini Bildir" ImageSource="location" BackgroundColor="White" Grid.Column="2"/> </Grid> </Grid> <!--Stories--> <StackLayout BackgroundColor="White"> <CollectionView HeightRequest="200" VerticalOptions="CenterAndExpand" HorizontalOptions="Center" ItemsLayout="HorizontalList" ItemsSource="{Binding .}" x:Name="listStories"> <CollectionView.ItemTemplate> <DataTemplate> <AbsoluteLayout> <Frame CornerRadius="10" BackgroundColor="Yellow" HeightRequest="175" WidthRequest="120" Padding="0" Margin="10,10,10,0"> <Image Source="{Binding StoryImage}" Aspect="AspectFill"/> </Frame> <StackLayout AbsoluteLayout.LayoutFlags="HeightProportional" AbsoluteLayout.LayoutBounds="5,15,75,100"> <circleimage:CircleImage VerticalOptions="Center" HorizontalOptions="Center" WidthRequest="50" HeightRequest="50" BorderColor="Blue" FillColor="White" BorderThickness="2" Source="{Binding MainImage}"/> </StackLayout> <StackLayout AbsoluteLayout.LayoutFlags="HeightProportional" AbsoluteLayout.LayoutBounds="10,140,125,15"> <Label Text="{Binding Label}" Margin="2" LineBreakMode="WordWrap" TextColor="White" FontSize="15"/> </StackLayout> </AbsoluteLayout> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> </StackLayout> <!--Posts--> <ListView ItemsSource="{Binding .}" VerticalScrollBarVisibility="Never" x:Name="listPosts" HasUnevenRows="True" RowHeight="150" VerticalOptions="Fill" HorizontalOptions="Center"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <Grid Margin="0,2,0,5" BackgroundColor="White"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <!--Post Title--> <StackLayout Grid.Row="0" Margin="10" Orientation="Horizontal"> <circleimage:CircleImage Source="{Binding ProfileImage}" WidthRequest="40" HeightRequest="40" Aspect="AspectFit"/> <Grid HorizontalOptions="StartAndExpand"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Label Text="{Binding ProfileName}" Grid.Row="0" Style="{StaticResource LabelStyle1}"/> <Label Text="{Binding PostTime}" Grid.Row="1" Style="{StaticResource LabelStyle2}"/> </Grid> <Image Source="detail" VerticalOptions="Center" HorizontalOptions="End"/> </StackLayout> <!--Post Detail--> <Grid Grid.Row="1"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Label Text="{Binding PostDetail}" Margin="10,0,10,0" Style="{StaticResource LabelStyle1}" Grid.Row="0"/> <Image Source="{Binding PostImage}" HorizontalOptions="Fill" HeightRequest="250" Grid.Row="1" Aspect="AspectFill"/> </Grid> <!--Post Reaction--> <StackLayout Orientation="Horizontal" Margin="10,0,10,0" Grid.Row="2"> <Image Source="like" Aspect="AspectFit"/> <Image Source="surprise" Aspect="AspectFit"/> <Image Source="angry" Aspect="AspectFit"/> <Label Text="1,5B" Style="{StaticResource LabelStyle2}" HorizontalOptions="StartAndExpand"/> <Label Text="114 Yorum" Style="{StaticResource LabelStyle3}"/> <Label Text="6 Paylaşım" Style="{StaticResource LabelStyle3}"/> </StackLayout> <!--Post Buttons--> <StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="Center" Grid.Row="3"> <Button Text="Beğen" ImageSource="likebutton" Style="{StaticResource Buttons}"/> <Button Text="Yorum Yap" ImageSource="comment" Style="{StaticResource Buttons}"/> <Button Text="Paylaş" ImageSource="share" Style="{StaticResource Buttons}"/> </StackLayout> </Grid> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </ScrollView>
It been a long design code. I shared the screenshots of the screen but the seeing application in a real device can be much better so you can see the gif of the app. If you ask your via e-mail or comments, I will be happy. The resolution of the gif can be bad but the in the devices app is awesome.
Çok yararlı bir paylaşım olmuş Teşekkürler