这是一个增强popup的插件,这里只讲用法,不讲原理。
第一步:装Nuget包,在Pcl项目中搜索"Rg.Plugins.Popup"作者是:Kirill Lyubimov,其他项目不需要装。(装Nuget教程)
第二步:创建popup页面(就是弹出显示的那个页面)
第三步:使用PopupNavigation类的几个导航方法。
好,知道了基本步骤之后就开始教程。
第一步应该都知道怎么操作,不多讲了。
重点讲第二步:
第二步内容比较多,我们一个一个来操作。
(1) 新建一个项目叫Demo(跨平台项目)
(2) 创建一个Popup的Page
新建项:——类型选:Forms Blank Content Page Xaml ,取名为DemoPopupPage吧。
(3)在DemoPopupPage.Xaml页面里面必须这样写
<?xml version="1.0" encoding="utf-8" ?>
<pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup"
x:Class="Demo.DemoPopupPage">
<!--代码块1-->
</pages:PopupPage>
下面是“代码块1”:
<pages:PopupPage.Animation>
<animations:ScaleAnimation
PositionIn="Top"
PositionOut="Center"
ScaleIn="1"
ScaleOut="0.7"
DurationIn="700"
EasingIn="BounceOut"/>
</pages:PopupPage.Animation>
<!--布局-->
对上面的代码稍作解释:
animations:ScaleAnimation表示使用缩放动画
对于PositionIn/PositionOut属性
表示Popup从页面的哪个方位进入/弹出。它有:
Center,Left,Right,Top,Bottom四个可以选,它的类型是MoveAnimationOptions,它是一个枚举。
关于PositionIn/PositionOut
表示Popup出现/消失动画的持续时间
关于ScaleIn/ScaleOut
表示出现/消失动画执行完毕后渲染Popup的时间
关于EasingIn
表示动画的特性。一共有
* Linear; 线性变换。
* SinOut; 平滑减速,就是慢慢变慢
* SinIn; 平稳加速,缓缓变快
* SinInOut; 加速进出,Popup出现和消失都会加速
* CubicIn; 慢慢开始加速,加速度不定的加速。
* CubicOut; 开始快速减速。,加速度不定的减速。
* CubicInOut加速减速。 一般选择。
* BounceOut;弹跳3次,静止在目的地
* BounceIn; 弹跳2次,然后静止在目的地
* SpringIn;不知道怎么解释,自己测试吧
* SpringOut;跟BounceIn有些类似,但是更有柔软性
Ps:这些属性在不同的动画类型展示出来的效果是不一样的。这些属性更像形容词,套到这里的缩放动画就是:线性变化的缩放动画
Ok,其他动画也大同小异。然后到这里
这里没有什么太大的问题。
要注意2个点,第一层布局必须是StackLayout,Grid这类布局,然后第二层布局一定是Frame(为了不把背景全部盖住),再下一级的布局跟正常的布局是一样的没有区别。
示例代码:
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<Frame BackgroundColor="Silver">
<StackLayout Spacing="20">
<ListView x:Name="ListView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Briefing}"></Label>
<Label Text="{Binding Color}"></Label>
<Label Text="{Binding Composition}"></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Label Text="??"></Label>
</StackLayout>
</Frame>
</StackLayout>
Ps:StackLayout 的VerticalOptions="Center" HorizontalOptions="Center"表示这个Popup会在屏幕中间,修改可以出现在其他的地方。
自定义动画:
有空再更