Showing posts with label XAML. Show all posts
Showing posts with label XAML. Show all posts

Thursday, 12 June 2014

Windows Phone Tutorial - Membuat Sliding Menu (4) - Mengimplementasikan Swipe Gesture

Oke, ini sudah bagian terakhir dari seri tutorial pembuatan Sliding Menu di Windows Phone. Kalau misalkan Anda sudah mengikuti postingan saya yang sebelumnya, Anda mungkin akan bertanya "Bagaimana mengimplementasikannya dengan cara menggeser layar saja?". Jawabannya adalah dengan menggunakan swipe gesture.


Yang pertama kalian lakukan adalah tambahkan event ManipulationStarted dan ManipulationCompleted di LayoutRoot kalian (kalau di saya nama yang saya kasih untuk event ini adalah StartSlideMenu dan SlideMenuComplete). ManipulationStarted ini akan terjadi apabila user mulai melalukan semacam interaksi pada kontrol ybs. Sedangkan ManipulationCompleted akan terjadi ketika interaksi selesai terjadi. Untuk mempelajari lebih lanjut mengenai event-event ini, silahkan lihat link ini dan ini.

Hasil akhir kodingan XAML kalian akan terlihat sepert ini

<!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent" ManipulationDelta="SlideMenu" ManipulationStarted="StartSlideMenu" ManipulationCompleted="SlideMenuComplete">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

 ...
Kemudian di code-behindnya tambahkan kodingan berikut ini.

Point currentPoint, initialPoint;

...

private void StartSlideMenu(object sender, ManipulationStartedEventArgs e)
{
   initialPoint.X = e.ManipulationOrigin.X;   
}

private void SlideMenuComplete(object sender, ManipulationCompletedEventArgs e)
{
   var velocities = e.FinalVelocities;
   var lin = velocities.LinearVelocity;
   
   if (lin.X - initialPoint.X >= 750 && Math.Abs(lin.Y - initialPoint.Y) <= 50)
   {
        //Periksa apakah menu tertutup
        //jika iya, Swipe Kanan
        if (!isMenuIn)
        {
           MenuIn.Begin();
        }
   }

   if (initialPoint.X - lin.X >= 750 && Math.Abs(lin.Y - initialPoint.Y) <= 50)
   {
        //Periksa apakah menu terbuka
        //jika iya, Swipe Kiri
        if (isMenuIn)
        {
            MenuOut.Begin();
        }
   }
}

Kodingan akhir kalian akan seperti ini

namespace SlideMenuModule
{
    public partial class MainPage : PhoneApplicationPage
    {

        bool isMenuIn = false;
        Point currentPoint, initialPoint;

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            MenuIn.Completed += MenuIn_Completed;
            MenuOut.Completed += MenuOut_Completed;
        }

        void MenuOut_Completed(object sender, EventArgs e)
        {
            isMenuIn = false;
        }

        void MenuIn_Completed(object sender, EventArgs e)
        {
            isMenuIn = true;
        }

        private void Click_Menu(object sender, RoutedEventArgs e)
        {
            if (isMenuIn)
            {
                isMenuIn = false;
                MenuOut.Begin();
            }
            else
            {
                isMenuIn = true;
                MenuIn.Begin();
            }
        }
  
        private void StartSlideMenu(object sender, ManipulationStartedEventArgs e)
        {
            initialPoint.X = e.ManipulationOrigin.X;   
        }

        private void SlideMenuComplete(object sender, ManipulationCompletedEventArgs e)
        {
            var velocities = e.FinalVelocities;
            var lin = velocities.LinearVelocity;

            if (lin.X - initialPoint.X >= 750 && Math.Abs(lin.Y - initialPoint.Y) <= 50)
            {
                //Periksa apakah menu tertutup
                //jika iya, Swipe Kanan
                if (!isMenuIn)
                {
                    MenuIn.Begin();
                }
            }

            if (initialPoint.X - lin.X >= 750 && Math.Abs(lin.Y - initialPoint.Y) <= 50)
            {
                //Periksa apakah menu terbuka
                //jika iya, Swipe Kiri
                if (isMenuIn)
                {
                    MenuOut.Begin();
                }
            }
        }
    }
}

Oke, selamat. Anda sudah membuat Sliding Menu di Windows Phone menggunakan swipe gesture. :)




Wednesday, 11 June 2014

Windows Phone Tutorial - Perubahan Theme

Sudah banyak sekali aplikasi Windows Phone yang menyediakan fitur perubahan theme. Hal ini dilakukan untuk menyediakan pilihan tampilan yang dapat dinikmati lebih oleh pengguna ketika menggunakan aplikasi. Fitur ini biasanya disediakan di halaman pengaturan atau Settings. Tema yang sering disediakan biasanya Dark dan Light. Nah, sekarang bagaimana caranya agar aplikasi yang kita buat dapat menyediakan perubahan tema? Ternyata sudah ada library untuk mengimplementasikan hal ini, yaitu Phone Theme Manager.




Aplikasi IdWinPhone

Aplikasi OkeZone


  1. Buka/buat projek Windows Phone 8 kalian, kemudian pilih Tools > Library Package Manager > Package Manager Console.
  2. Ketikka Install-Package PhoneThemeManager, tunggu sampai download dan instalasi librarynya selesai.
  3. Jika sudah, ketikkan kodingan XAML berikut ke dalam ContentPanel kalian.
  4. <StackPanel Margin="0,10" HorizontalAlignment="Stretch">
    <TextBlock Text="Testing" FontSize="30"/>
    <TextBlock Text="Sub testing" FontSize="15"/>
    <Button Content="white" Click="WhiteTheme_Click"/>
    <Button Content="black" Click="BlackTheme_Click"/>
    </StackPanel>
  5. Lalu ketikkan kodingan berikut di dalam code-behind halaman kalian
  6. private void WhiteTheme_Click(object sender, RoutedEventArgs e)
    {
    ThemeManager.ToLightTheme();
    }

    private void BlackTheme_Click(object sender, RoutedEventArgs e)
    {
    ThemeManager.ToDarkTheme();
    }


Oke, silahkan jalankan aplikasi kalian dan lihatlah hasilnya :)


Dark Theme

Light Theme

Dark Theme

Light Theme

Gampang kan bikin pengaturan perubahan tema? :) Happy coding gans..


Saturday, 7 June 2014

Windows Phone Tutorial - Membuat Sliding Menu (3) - Membuat Menu Bergeser

Ketika kita sudah memiliki animasi slide in dan slide out (jika Anda belum tahu caranya bagaimana, lihat di sini). Nah sekarang kita akan membuat code-behind-nya. Silahkan masukkan kodingan ini di file .cs halaman aplikasi Windows Phone kalian.



public partial class MainPage : PhoneApplicationPage
    {

        bool isMenuIn = false;

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            MenuIn.Completed += MenuIn_Completed;
            MenuOut.Completed += MenuOut_Completed;
        }

        void MenuOut_Completed(object sender, EventArgs e)
        {
            isMenuIn = false;
        }

        void MenuIn_Completed(object sender, EventArgs e)
        {
            isMenuIn = true;
        }

        private void Click_Menu(object sender, RoutedEventArgs e)
        {
            //Memastikan tidak menjalankan animasi 
            //ketika sudah ada animasi yang sedang berjalan
            if (isMenuIn)
            {
                isMenuIn = false;
                MenuOut.Begin();
            }
            else
            {
                isMenuIn = true;
                MenuIn.Begin();
            }
        }

    }

Jangan lupa untuk memasukkan property Click="Click_Menu" pada Button di tampilan utama kita. Kodingan XAML kalian nantinya akan menjadi seperti ini.

<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationDelta="SlideMenu" ManipulationStarted="StartSlideMenu" ManipulationCompleted="SlideMenuComplete">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
         <Button Content="Button" HorizontalAlignment="Left" Height="106" Margin="50,180,0,0" VerticalAlignment="Top" Width="396"  Click="Click_Menu"   /></Grid>
        <Grid x:Name="slideMenu" HorizontalAlignment="Left" Height="768" Margin="-362,0,0,0" Grid.RowSpan="2" VerticalAlignment="Top" Width="369" Background="#FF830101" RenderTransformOrigin="0.5,0.5">
         <Grid.RenderTransform>
          <CompositeTransform/>
         </Grid.RenderTransform>
         <StackPanel HorizontalAlignment="Left" Height="748" Margin="10,10,0,0" VerticalAlignment="Top" Width="349">
          <TextBlock HorizontalAlignment="Left" Height="58" TextWrapping="Wrap" Text="Teks1 " VerticalAlignment="Top" Width="306"/>
          <TextBlock HorizontalAlignment="Left" Height="74" TextWrapping="Wrap" Text="Teks 2" Width="306"/>
          <Button Content="Button 1" HorizontalAlignment="Left" Height="96" Margin="10,0,0,0" Width="296"/>
         </StackPanel>
        </Grid>
    </Grid>
 
Oke, sudah jadi deh, silahkan cek Slide Menu yang sudah kalian buat :)
Next post...






Tuesday, 27 May 2014

Windows Phone Tutorial - Membuat Sliding Menu (2) - Animasi Slide In dan Slide Out

Oke, selamat datang di tutorial kedua dari Membuat Sliding Menu di Windows Phone. Kali ini kita akan fokus pada pembuatan animasi Slide In dan Slide Out menu geser kita. Untuk toturial ini disarankan Anda membaca dan mengikuti langkah-langkah yang sudah saya jelaskan di bagian pertama. Kalau Anda tidak keberatan baca langkah-langkah di bawah ini, tidak masalah, terserah Anda.



Untuk bagian kedua dari tutorial ini, saya akan menggunakan Blend for Visual Studio 2012.  Bagi Anda yang belum familiar dengan tools ini, singkat kata tools ini merupakan tools yang disarankan bagi designer untuk mendesain aplikasi Windows Phone atau Windows 8.

Pertama-tama, di Visual Studio 2012, bukalah aplikasi yang sudah Anda buat dari tutorial pertama.

Kemudian klik kanan Solution kalian di Solution Explorer dan klik Open in Blend (atau bisa saja langsung buka Blend 2012 dan buka projek kalian). Aplikasi kalian akan terbuka di Blend for Visual Studio.

Ketikkan kodingan XAML ini sesudah akhir pembukaan tag phone:PhoneApplicationPage dan sebelum grid LayoutRoot.

<phone:PhoneApplicationPage.Resources>
  <Storyboard x:Name="MenuIn">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="slideMenu">
    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
    <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="364"/>
   </DoubleAnimationUsingKeyFrames>
  </Storyboard>
  <Storyboard x:Name="MenuOut">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="slideMenu">
    <SplineDoubleKeyFrame KeyTime="0" Value="364"/>
    <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
   </DoubleAnimationUsingKeyFrames>
  </Storyboard>
 </phone:PhoneApplicationPage.Resources>

Dan sudah deh, ini kalian sudah membuat animasi slide in dan out dari slide menu. Silahkan tunggu postingan berikutnya ya gans :)






Monday, 26 May 2014

Windows Phone Tutorial - Membuat Halaman Aplikasi Menjadi Layar Penuh (Fullscreen)

Hai semua, balik lagi dengan postingan seputar Windows Phone Development. Kali ini saya ingin bahas tentang bagaimana membuat aplikasi Windows Phone kita menjadi Fullscreen (layar penuh). Misalkan kalian sudah bikin layout aplikasi kalian, tapi kalian melihat suatu space yang termakan untuk bar sinyal, baterai device, dst dari Windows Phone. Space ini disebut dengan System Tray.

System Tray
System Tray

Nah, sekarang bagaimana cara menghilangkan System Tray ini? Pertama, kalian bisa ubah kodingan XAML property shell:SystemTray.IsVisible dari tag phone:PhoneApplicationPage. Jadinya seperti ini:

<phone:PhoneApplicationPage
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
 xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
 x:Class="FulllScreenModule.MainPage"
 FontFamily="{StaticResource PhoneFontFamilyNormal}"
 FontSize="{StaticResource PhoneFontSizeNormal}"
 Foreground="{StaticResource PhoneForegroundBrush}"
 SupportedOrientations="Portrait" Orientation="Portrait"
 shell:SystemTray.IsVisible="False">

Atau bisa juga kalian kasih di source code-behind halamannya, misalnya seperti ini:

using Microsoft.Phone.Shell;

...

public MainPage()
        {
            InitializeComponent();
   SystemTray.IsVisible = false;
        }


System Tray Invisible
System Tray Invisible


Okeh, sudah deh, semoga bermanfaat ya :)


Wednesday, 7 May 2014

Windows Phone Tutorial - Membuat Sliding Menu (1) - Layout Aplikasi

Oke, ini bagian pertama dari tutorial bagaimana cara membuat Sliding Menu di Windows Phone. Karena ini bagian pertama, jadi dimulai saja dengan yang gampang-gampang saja. Di sini kita akan membuat Layout Sliding Menu yang akan bekerja jika user memencet suatu tombol. Atau bisa juga dengan gesture swipe.


Nah, pertama-tama buka Visual Studio kalian dan buatlah suatu projek Windows Phone 8, terserah namanya apa.

Setelah itu, ketikkan kode xaml ini di MainPage.xaml

<!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
            <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
         <Button Content="Button" HorizontalAlignment="Left" Height="106" Margin="50,180,0,0" VerticalAlignment="Top" Width="396" Click="Click_MenuIn"/></Grid>
        <Grid x:Name="slideMenu" HorizontalAlignment="Left" Height="768" Margin="-362,0,0,0" Grid.RowSpan="2" VerticalAlignment="Top" Width="369" Background="#FF830101" RenderTransformOrigin="0.5,0.5">
         <Grid.RenderTransform>
          <CompositeTransform/>
         </Grid.RenderTransform>
         <StackPanel HorizontalAlignment="Left" Height="748" Margin="10,10,0,0" VerticalAlignment="Top" Width="349">
          <TextBlock HorizontalAlignment="Left" Height="58" TextWrapping="Wrap" Text="Teks1 " VerticalAlignment="Top" Width="306"/>
          <TextBlock HorizontalAlignment="Left" Height="74" TextWrapping="Wrap" Text="Teks 2" Width="306"/>
          <Button Content="Button 1" HorizontalAlignment="Left" Height="96" Margin="10,0,0,0" Width="296"/>
         </StackPanel>
        </Grid>
    </Grid>
 

Nanti kalian hasilnya akan seperti ini.


Kemudian jika Anda memiliki Expression Blend 2012, langkah berikutnya adalah membuat animasi SlideIn dan SlideOut (terserah kalian namanya apa, kalau saya sih ini). Kalau tidak ada, tidak apa-apa juga, tapi masalahnya kalian harus menulis kodingan XAML untuk animasi tersebut secara manual. Ini akan saya bahas di postingan saya yang berikutnya ;)






Tuesday, 6 May 2014

Windows Phone Tutorial - Membuat Sliding Menu

Anda mungkin sudah melihat postingan yang sama, tapi mengenai Android di halaman blog saya  yang satu ini. Nah, postingan ini sebenarnya sama, namun ada yang beda.

Anda pasti sudah menebaknya, yaitu postingan ini lebih ke Windows Phone. :)

Ceritanya karena saya lagi semangat nulis tentang pemrograman Windows Phone menggunakan C#/XAML, ya jadi saya mulai bikin postingan duluan tentang WP dehh hehehe :P

Postingan ini karena lumayan panjang jadi saya bagi-bagi menjadi beberapa bab, yaitu:
1. Pembuatan layout Slide Menu, di sini,
2. Pembuatan animasi Slide In dan Slide Out, di sini,
3. Membuat menu bergeser, di sini,
4. Menimplementasikan Swipe Gesture, di sini.

Silahkan lanjut ke postingan berikutnya ya gan :)