Langsung ke konten utama

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. :)




Komentar

Postingan populer dari blog ini

PHP Tutorial - Menjalankan Program .exe "Hello World!" Melalui PHP

Hai semua, saya ingin berbagi ilmu yang saya dapatkan sambil mengerjakan skripsi saya. Pernah tidak, kalian sudah bikin suatu program keren menggunakan bahasa C/C++, tapi kalian harus menjalankannya di SERVER??? Contoh kasus yang membuat Anda melakukan ini apa? Contoh sederhananya membuat Web Service. Di mana operasi perhitungan service yang ditawarkan menggunakan bahasa C/C++. Kalau misal kalian mau bikin make PHP dari awal web servicenya, sebenarnya tidak apa-apa juga, tapi kalau misalkan sudah ada program C/C++-nya, mending make yang sudah ada daripada buat dari awal lagi kan??? :)

Android Tutorial - Membuat Rounded Corner Edit Text

Kali ini saya ingin menmposting tentang bagaimana caranya membuat rounded corner EditText (EditText dengan sudut membulat) di Android. Ikuti saja langkah-langkah berikut:

Android Tutorial - Menambahkan File Gambar ke Image Gallery Emulator Android

Kali ini saya ingin berbagi tentang bagaimana caranya kita bisa memasukkan file (baik itu gambar .jpg, .png, atau musik .mp4, .wav, dll.) tapi tanpa perlu diprogram menggunakan java, cukup lewat Eclipse atau ADTnya saja. Caranya cukup mudah ko.