windows phone製作引導頁

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   檔案   

適用於WP7 WP8+

源碼下載擼這裡

製作動畫gif小軟體下載

小技巧

①圖片是純色背景:將版面設定跟圖片背景一樣顏色

②圖片是漸層or其他,切圖時候:單獨切背景(版面設定這個為背景)跟圖片裡面元素(透明背景)

 

 

1、Pivot控制項(代碼在下載包裡面)

先看效果

毫無疑問,圖片過度之間動畫效果太差,不能滿足哥要求。。。

 

2、panroma也稱為全景控制項(代碼在下載包裡面)

 

相比pivot控制項 圖片切換之間有縫串連,給人感覺不會有那麼空虛。可惜啟動有個動畫效果,因為這點哥把它拋棄了。

(找了大半天也沒有辦法將頁面啟動效果去掉,那位大牛知道不妨告訴小弟)

 

3、WPToolkit裡面FlipView控制項

地址下載:https://github.com/Kinnara/WPToolkit

因為一個小功能,引用整個dll,你覺得有必要嗎?當然你沒時間折騰,可以直接引用過來。

哥可能閑的蛋疼,今天花了一點點時間將裡面FlipView控制項提取出來

 

第一步:先拷貝整個FlipView,產生一下,看一下報錯,把其他類也複製過來。

第二步:樣式拷貝,WPToolkit所有樣式都放在Themes/generic.xaml這個檔案裡面,按下Ctrl+F 輸入FlipView看看有那些樣式全部拷貝過來

(注意:樣式必須放在你自己項目這個目錄下Themes/generic.xaml,程式才能自動調用)

 如果不是這個目錄,請手動引用這個樣式

第三步:

建立一個Demo測試

<phone:PhoneApplicationPage    x:Class="Test.FlipViewTest"    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:local="clr-namespace:Microsoft.Phone.Controls;assembly=LYL.Control.FlipView"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    FontFamily="{StaticResource PhoneFontFamilyNormal}"    FontSize="{StaticResource PhoneFontSizeNormal}"    Foreground="{StaticResource PhoneForegroundBrush}"    SupportedOrientations="Portrait" Orientation="Portrait"    mc:Ignorable="d"    shell:SystemTray.IsVisible="False">    <!--LayoutRoot 是包含所有頁面內容的根網格-->    <Grid x:Name="LayoutRoot" Background="#E3DFDC">        <local:FlipView>            <local:FlipViewItem>                <Image  Source="/Images/01.jpg"/>            </local:FlipViewItem>            <local:FlipViewItem>                <Image  Source="/Images/02.jpg"/>            </local:FlipViewItem>            <local:FlipViewItem>                <Image  Source="/Images/03.jpg"/>            </local:FlipViewItem>            <local:FlipViewItem>                <Image  Source="/Images/04.jpg"/>            </local:FlipViewItem>            <local:FlipViewItem>                <Border Margin="0,0,0,0" Height="800" Width="480">                    <Border.Background>                        <ImageBrush ImageSource="/Images/05.jpg" />                    </Border.Background>                    <Image Source="/Images/startbutton.png" Width="200" Margin="0,590,0,0" />                </Border>            </local:FlipViewItem>        </local:FlipView>    </Grid></phone:PhoneApplicationPage>

到這裡真的沒問題,當然不是了。這裡還要進一步封裝以便下次直接調用

直接上代碼,哥就不羅嗦

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Markup;using System.Windows.Media.Imaging;namespace Microsoft.Phone.Controls{    public class FlipViewHelper    {        /// <summary>        /// 資料來源        /// </summary>        public List<FlipViewModel> Data { get; set; }        /// <summary>        /// 最後一張圖片的開始體驗按鈕        /// </summary>        public string StartSource { get; set; }        public Action FlipLastClick;        public void Show(Panel el)        {            var flip = new FlipView();            for (int i = 0; i < Data.Count; i++)            {                var xml =                 " <Border xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"  xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Margin=\"0,0,0,0\" Height=\"800\" Width=\"480\">"                    + "<Border.Background>"                        + "<ImageBrush ImageSource=\"{0}\" />"                    + "</Border.Background>"                    // + " <Image Source=\"{4}\" Width=\"{1}\"  Margin=\"0,{2},0,0\" Visibility=\"{3}\" />"                + " </Border>";                xml = string.Format(xml, Data[i].ImageSource);                var border = XamlReader.Load(xml) as Border;                if (border != null && i == Data.Count - 1)                {                    BitmapImage bit = new BitmapImage();                    bit.UriSource = new Uri(StartSource, UriKind.Relative);                    var image = new Image                    {                        Source = bit,                        Width = Data[i].StartWidth,                        Margin = new Thickness(0, Data[i].StartMarginTop, 0, 0),                    };                    //開始體驗按鈕點擊事件                    image.Tag += (s1, e1) =>                    {                        if (FlipLastClick != null)                        {                            FlipLastClick();                        }                    };                    border.Child = image;                }                var item = new FlipViewItem();                item.Content = border;                flip.Items.Add(item);            }            el.Children.Add(flip);        }    }    public class FlipViewModel    {        public string ImageSource { get; set; }        private int _startWidth = 200;        public int StartWidth        {            get { return _startWidth; }            set { _startWidth = value; }        }        private double _startMarginTop = 590;        public double StartMarginTop        {            get { return _startMarginTop; }            set { _startMarginTop = value; }        }    }}

 

使用: 引用DLL,http://files.cnblogs.com/walleyekneel/LYL.Control.FlipView.rar

            var flip = new FlipViewHelper();            flip.Data = new List<FlipViewModel>             {               new FlipViewModel{ ImageSource="/Images/01.jpg"},               new FlipViewModel{ ImageSource="/Images/02.jpg"},               new FlipViewModel{ ImageSource="/Images/03.jpg"},               new FlipViewModel{ ImageSource="/Images/04.jpg"},               new FlipViewModel{ ImageSource="/Images/05.jpg"},            };            flip.StartSource = "/Images/startbutton.png";            flip.FlipLastClick += () =>            {                //TODO:跳轉到某個頁面                //儲存一個值到隔離儲存區 (Isolated Storage),下次啟動就不要new這個執行個體            };            flip.Show(LayoutRoot);

  

所有原始碼在開頭已經放出了

WP8.1內建有FlipView用法大同小異,下次再補充,先看世界盃去咯

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.