windows phone制作引导页
适用于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:跳转到某个页面
//保存一个值到独立存储,下次启动就不要new这个实例
};
flip.Show(LayoutRoot);
所有源代码在开头已经放出下载地址了
WP8.1自带有FlipView用法大同小异,下次再补充,先看世界杯去咯
windows phone制作引导页的更多相关文章
- 纯windows下制作变色龙引导安装U盘教程
原创教程:纯windows下制作变色龙引导安装U盘教程 支持Mavericks和Yosemite 支持白苹果 目标:windows下制作带 Chamelon变色龙引导的黑苹果安装U盘,支持PC机引导安 ...
- Onboard,迷人的引导页样式制作库
简介 Onboard主要用于引导页制作,源码写的相当规范,值得参考. 项目主页: https://github.com/mamaral/Onboard 实例下载: https://github.com ...
- MUI - 引导页制作
引导页制作 本文的引导页和[官方的引导页示例](https://github.com/dcloudio/mui/blob/master/examples/hello-mui/examples/guid ...
- Xamarin.Android之引导页的简单制作
0x01 前言 对于现在大部分的APP,第一次打开刚安装或更新安装的APP都会有几个引导界面,通常这几个引导页是告诉用户 APP有些什么功能或者修改了什么bug.新增了什么功能等等等. 下面就用Xam ...
- Android--ViewPager制作APP引导页
ViewPager使用FragmentStatePagerAdapter做Adapter,引导页使用多Fragment形式. FragmentStatePagerAdapter代码如下: public ...
- ViewPager制作APP引导页+若干动画效果
ViewPager使用FragmentStatePagerAdapter做Adapter,引导页使用多Fragment形式. 见http://www.cnblogs.com/bmbh/p/567276 ...
- Android引导页设计
大家在安装好一个应用后,第一次打开时往往会出现一个使用引导页,形式一般为三.四张图片,随着我们的滑动进行切换,在最后一页会有一个进入应用的按钮,我们通过点击这个按钮可以进入应用,其实这其中没有太多的复 ...
- windows下制作linux U盘启动盘或者安装优盘(转)
windows下制作linux U盘启动盘或者安装优盘(转) Linux发行版排行榜:http://iso.linuxquestions.org/ [方案一]:UltraISO(不推荐,在Window ...
- 网站引导页插件intro.js 的用法
intro.js是一个用于制作网页引导效果的js插件,用法很简单,intro.js.v2.0.rar 1.在需要的页面添加引用 intro.js introjs.css 这两个文件已经足够,但是文件夹 ...
随机推荐
- java代码多线程实现如下
总结:我的比赛得了最差的奖,老师提都没提,所以,我应该有自知之明,你并不是他最喜欢的学生 import java.util.Scanner; //利用多线程实现输入等待…… public class ...
- AngularJS:表达式
ylbtech-AngularJS:表达式 1.返回顶部 1. AngularJS 表达式 AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS ...
- docker 及 linux 初接触
3天来净折腾这俩东西了,总结一下(很多都是同事给出的解释,先不保证正确性): 1.docker 里的images 和 container images 类似系统盘,container类似用系统盘装起来 ...
- Deep Learning 学习笔记(6):神经网络( Neural Network )
神经元: 在神经网络的模型中,神经元可以表示如下 神经元的左边是其输入,包括变量x1.x2.x3与常数项1, 右边是神经元的输出 神经元的输出函数被称为激活函数(activation function ...
- PYTHON 中的字符集
一.前言 Python中的字符编码是个老生常谈的话题,今天来梳理一下相关知识,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的 ...
- Vulkan Tutorial 03 理解Instance
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Creating an instance 与Vulkan打交道,通常的步骤是创建一个 ...
- linux中stdout,stdin,stderr意义
stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误. 在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个.那么 ...
- python小程序:备份文件
设计程序,有以下步骤: 需要备份的文件和目录由一个列表指定. 备份应该保存在主备份目录中. 文件备份成一个zip文件. zip存档的名称是当前的日期和时间. 解决方案: 版本一: #!/usr/bin ...
- laravel数据迁移(创建错误列不能创建)
创建数据表的命令 php artisan make:migration create_users_table 执行这个迁移的命令, php artisan migrate 其实感觉就像简单的方法创建数 ...
- IDEA02 利用Maven创建Web项目、为Web应用添加Spring框架支持、bean的创建于获取、利用注解配置Bean、自动装配Bean、MVC配置
1 环境版本说明 Jdk : 1.8 Maven : 3.5 IDEA : 专业版 2017.2 2 环境准备 2.1 Maven安装及其配置 2.2 Tomcat安装及其配置 3 详细步骤 3.1 ...