Soru & Cevap

Windows Phone - Animasyonlu Splash Ekranı

11.12.2015 - 03:56

Çok değerli Windows Phone Geliştiricileri,
Windows Phone 8.1 uygulamam için konu başlığından da anlaşılacağı üzere, animasyonlu bir Splash Screen ekranı oluşturmak istiyorum. Tam olarak yapmak istediğim şey şu:

Png olarak hazırladığım 25 resmim var. Arka arkaya oynatılınca küçük bir animasyon oluşuyor. Ben bu resimleri, arka arkaya gelecek şekilde bir animasyon ile Splash ekranında göstermek istiyorum. Bunu nasıl yapabilirim?

 

 

12 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-35036-1544200973.jpg
yunustek
13.12.2015 - 02:37

Merhaba Burak,
Animasyon ile image in opacity değerini belli bir sürede 0'dan 100'e çıkararak daha yumuşak açılmasını sağlayabilirsin. Animasyon kodunu aşağıda paylaştım.
Örneğin fotoğrafın 0.25 saniyede açılmasını istersen aşağıda KeyTime Değerini "0:0:0.25" olarak düzenlemelisin.

Xaml bölümüne şu animasyonu ekleyip:

<Storyboard x:Name="Storyboard1">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="splashAnimation">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1"/>
            </DoubleAnimationUsingKeyFrames>
 </Storyboard>

For döngüsünde de animasyonu baştarak bu işi çözebilirsin

for (int i = 0; i < 26; i++)
            {
                var imgPath = string.Format("ms-appx:///Assets/SplashScreen/Resim_{0}.png", i);
                Storyboard1.Begin();
                splashAnimation.Source = new BitmapImage(new Uri(imgPath,UriKind.RelativeOrAbsolute));
                await Task.Delay(TimeSpan.FromMilliseconds(25.0));
            }

Kolay gelsin :)

Burhan Aksendir
13.12.2015 - 03:02
Merhaba Yunus, çok teşekkür ederim. Gerçekten yardımcı oldu. Storyboard ile çözemem sanıyordum ama işime yaradı :)
Yunus Tek
13.12.2015 - 03:20
Rica ederim :)
Profile picture for user burhanaksendir
burhanaksendir
13.12.2015 - 01:17

 

Ben şimdi şöyle bir şeyler yazdım ama bir sorun var. Flicker oluyor. Yani resim her değiştiğinde yumuşak bir geçiş yerine sert bir titreme ile diğer resme geçiyor. Bu sorunu nasıl aşabilirim?
 

<Image x:Name="splashAnimation" Source="Assets/SplashScreen/Resim_0.png"/>

 protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            for (int i = 0; i < 26; i++)
            {
                var imgPath = string.Format("ms-appx:///Assets/SplashScreen/Resim_{0}.png", i);
                splashAnimation.Source = new BitmapImage(new Uri(imgPath,UriKind.RelativeOrAbsolute));
                await Task.Delay(TimeSpan.FromMilliseconds(25.0));
            }
           
        }

 

 

picture-5820-1449890373.jpg
mehmetdniz
12.12.2015 - 05:27

25 tane png resminin boyutu ne kadar acaba :) blend editöründe çok rahat bir şekilde istediğin animasyonu oluşturabilirsin. Bu arkadaş videoda anlatmış. Aynı mantıkla oluyor. windows8,8.1 yada phone farketmez.  http://www.yunustek.com/windows-8-animasyon-olusturmacxaml.html/

Burhan Aksendir
12.12.2015 - 09:29
Teşekkür ederim. Ram sorunu olur diye mi sordunuz? Aslında fazla yer kaplamıyor. Optimize ettim :) Toplamı 1MB. Blend editöründe image dosyalarının Source kısmını bütün çabalarıma rağmen anime edemedim. Bütün property leri anime edebiliyorum ama source kısmında keyframe atayıp anime etmiyor nedense.
Mehmet DENİZ
13.12.2015 - 01:11
hafızayı kaplar, şöyle yapsan; bir tane image kullanıp diğer resimlerin hepsini kod tarafında imageye src etsen ? bunu yapabilirsen fazla boyuttan kaçınabilirsin.
Burhan Aksendir
13.12.2015 - 01:19
Anladım. Ben şimdi şöyle bir kod bloğu yazdım. Bir sorun var ama. Diğer cevapta açıkladım. Bu yorum kısmına kod ekleyemedim o yüzden ayrı bir cevap olarak yazdım.