WPF实现Android菜单动画
WPF开发者QQ群: 340500857
欢迎转发、分享、点赞,谢谢大家~。
效果预览:
一、MainWindow.xaml代码如下:
<Grid><Grid.Background><ImageBrush ImageSource="background.png"/></Grid.Background><Border Width="400" Height="235" Background="#F9F7F9"VerticalAlignment="Top" Margin="10,0" SnapsToDevicePixels="True"><UniformGrid Columns="5" VerticalAlignment="Bottom"><Viewport3D Height="80" Width="80"><Viewport3D.Camera><OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><AmbientLight Color="White"/></ModelVisual3D.Content></ModelVisual3D><ContainerUIElement3D><ContainerUIElement3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D Angle="0" Axis="1 0 0"/></RotateTransform3D.Rotation></RotateTransform3D></ContainerUIElement3D.Transform><Viewport2DVisual3D><Viewport2DVisual3D.Material><DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/></Viewport2DVisual3D.Material><Viewport2DVisual3D.Geometry><MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"TextureCoordinates="0,0 0,1 1,1 1,0"TriangleIndices="0 1 2 0 2 3"/></Viewport2DVisual3D.Geometry><Border Background="#5B31AD" Height="110" Width="110" CornerRadius="0,0,0,30"><Path Data="{StaticResource PathBuildingRegular}" Fill="#FFFF"Stretch="Fill" Width="40" Height="40"/></Border></Viewport2DVisual3D></ContainerUIElement3D></Viewport3D.Children></Viewport3D><Viewport3D Height="80" Width="80"><Viewport3D.Camera><OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><AmbientLight Color="White"/></ModelVisual3D.Content></ModelVisual3D><ContainerUIElement3D><ContainerUIElement3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D Angle="0" Axis="1 0 0"/></RotateTransform3D.Rotation></RotateTransform3D></ContainerUIElement3D.Transform><Viewport2DVisual3D><Viewport2DVisual3D.Material><DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/></Viewport2DVisual3D.Material><Viewport2DVisual3D.Geometry><MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"TextureCoordinates="0,0 0,1 1,1 1,0"TriangleIndices="0 1 2 0 2 3"/></Viewport2DVisual3D.Geometry><Border Background="#8E1FA4" Height="110" Width="110"><Path Data="{StaticResource PathAlarmMD}" Fill="#FFFF"Stretch="Fill" Width="40" Height="40"/></Border></Viewport2DVisual3D></ContainerUIElement3D></Viewport3D.Children></Viewport3D><Viewport3D Height="80" Width="80"><Viewport3D.Camera><OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><AmbientLight Color="White"/></ModelVisual3D.Content></ModelVisual3D><ContainerUIElement3D><ContainerUIElement3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D Angle="0" Axis="1 0 0"/></RotateTransform3D.Rotation></RotateTransform3D></ContainerUIElement3D.Transform><Viewport2DVisual3D><Viewport2DVisual3D.Material><DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/></Viewport2DVisual3D.Material><Viewport2DVisual3D.Geometry><MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"TextureCoordinates="0,0 0,1 1,1 1,0"TriangleIndices="0 1 2 0 2 3"/></Viewport2DVisual3D.Geometry><Border Background="#3A7DFE" Height="110" Width="110"><Path Data="{StaticResource PathFriend}" Fill="#FFFF"Stretch="Fill" Width="40" Height="30"/></Border></Viewport2DVisual3D></ContainerUIElement3D></Viewport3D.Children></Viewport3D><Viewport3D Height="80" Width="80" x:Name="viewport3DBus" MouseEnter="viewport3DBus_MouseEnter"><Viewport3D.Camera><OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/></Viewport3D.Camera><Viewport3D.Children><ModelVisual3D><ModelVisual3D.Content><AmbientLight Color="White"/></ModelVisual3D.Content></ModelVisual3D><ContainerUIElement3D><ContainerUIElement3D.Transform><RotateTransform3D><RotateTransform3D.Rotation><AxisAngleRotation3D x:Name="axis3dBus" Angle="0" Axis="1 0 0"/></RotateTransform3D.Rotation></RotateTransform3D></ContainerUIElement3D.Transform><Viewport2DVisual3D><Viewport2DVisual3D.Material><DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/></Viewport2DVisual3D.Material><Viewport2DVisual3D.Geometry><MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"TextureCoordinates="0,0 0,1 1,1 1,0"TriangleIndices="0 1 2 0 2 3"/></Viewport2DVisual3D.Geometry><Border Background="#5EECA6" Height="110" Width="110"><Path Data="{StaticResource PathBus}" Fill="#FFFF"Stretch="Fill" Width="35" Height="40"/></Border></Viewport2DVisual3D><Viewport2DVisual3D><Viewport2DVisual3D.Material><DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/></Viewport2DVisual3D.Material><Viewport2DVisual3D.Geometry><MeshGeometry3D Positions="-1,1,1 1,1,1 1,1,-1 -1,1,-1"TextureCoordinates="0,0 0,1 1,1 1,0"TriangleIndices="0 1 2 0 2 3"/></Viewport2DVisual3D.Geometry><Border Background="#41A545" Height="110" Width="110" RenderTransformOrigin="0.5,0.5"><Border.RenderTransform><TransformGroup><RotateTransform Angle="90"/></TransformGroup></Border.RenderTransform><StackPanel VerticalAlignment="Center"><Path Data="{StaticResource PathBus}" Fill="#FFFF"Stretch="Fill" Width="35" Height="40"/><TextBlock Text="Bus" HorizontalAlignment="Center" FontSize="14" Foreground="White"/></StackPanel></Border></Viewport2DVisual3D></ContainerUIElement3D></Viewport3D.Children></Viewport3D> </UniformGrid></Border><Border Width="450" BorderBrush="#181618" BorderThickness="25,0,25,25" Height="260"CornerRadius="0,0,50,50" Background="{x:Null}"VerticalAlignment="Top" Margin="10,0" SnapsToDevicePixels="True"><Border.Effect><DropShadowEffect Color="White" BlurRadius="10" Direction="300" ShadowDepth="0" /></Border.Effect></Border><StackPanel><TextBlock Text="微信号公众号:WPFDevelopers" HorizontalAlignment="Center"VerticalAlignment="Top" Margin="0,20" FontSize="20" FontWeight="Black"/><TextBlock Text="源码获取关注公众号后输入:3DBar 即可获取" HorizontalAlignment="Center"VerticalAlignment="Top" Margin="0,20" FontSize="14" FontWeight="Black"/></StackPanel> </Grid>
二、MainWindow.xaml.cs代码如下:
DoubleAnimation animation = null;
private void viewport3DBus_MouseEnter(object sender, MouseEventArgs e){if (animation != null) return;animation = new DoubleAnimation{Duration = new Duration(TimeSpan.FromSeconds(1.5)),From = 0,To = 90,EasingFunction = new BackEase { EasingMode = EasingMode.EaseInOut },};animation.Completed += (s, e1) =>{animation = null;};axis3dBus.BeginAnimation(AxisAngleRotation3D.AngleProperty, animation);}
源码获取关注微信公众号输入:“3DBar” 即可获取源码。
WPF开发者QQ群: 340500857
blogs: https://www.cnblogs.com/yanjinhua
Github:https://github.com/yanjinhuagood
出处:https://www.cnblogs.com/yanjinhua
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载请著名作者 出处 https://github.com/yanjinhuagood
WPF实现Android菜单动画相关推荐
- android菜单动画,利用 android studio 制作一个菜单动画
目的:利用Android studio 编一个菜单动画,以便初步了解Android studio的基本操作,初步了解Android开发的思考方法. 技术: 1.RelativeLayout. 2.sr ...
- Android m 自定义下拉菜单,Android实现动画效果的自定义下拉菜单功能
我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...
- .NET CORE(C#) WPF 值得推荐的动画菜单设计
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF 值得推荐的动画菜单设计 阅读导航 本文背景 代码实现 本文 ...
- android rotate 动画,Android RotateAnimation详解
RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度. 1.RotateAnimation(fromDegrees, toDegrees) [默 ...
- Kotlin 仿微信长按列表弹出菜单(动画)
一.测试 实现: 二.项目: 仿微信长按列表弹出菜单代码,MainActivity.kt class MainActivity : AppCompatActivity(), AdapterView.O ...
- Android自定义动画专题二
android自定义动画专题二 在上篇文章中给大家介绍了android自定义动画的第一种表现形式:view的绘制:不过这只是一种单纯利用自定义控件绘制的方式去实现:这篇文章会给大家演示如何通过自定义控 ...
- android 自定义loading,Android自定义动画-StarLoadingView
今天来分享第二个自定义loading的动画,起了个名字叫 蹦跶的星星 ,还是老规矩先介绍,后上图. 实现效果在最后,GIF有点大,手机流量慎重. 介绍 首先声明做这个动画的初衷是为了学习和分享,所以从 ...
- android 三维动画效果,9款令人惊叹的HTML5 3D动画应用
原标题:9款令人惊叹的HTML5 3D动画应用 之前我们已经向大家分享了很多HTML5动画应用了,大部分都非常炫酷,也有一小部分是很实用的.今天我们要向各位HTML5动画爱好者介绍更多的HTML5 3 ...
- 【学习笔记】Android视图动画学习
2019独角兽企业重金招聘Python工程师标准>>> 1.Android View动画框架 Animation框架定义了透明度.旋转.缩放和位移几种常见的动画. 实现原理:每次绘制 ...
最新文章
- hibernate-session中的方法
- [译]ES6新特性:八进制和二进制整数字面量
- unordered_map的使用特性
- HTTP详解-工作原理
- Luogu P1031 均分纸牌(贪心)
- sharepoint 概念及认证方式介绍
- spring 使用XML配置开发Spring AOP
- python-数字数据类型-整数类型-浮点数类型-数据类型间的转换
- LeetCode 187. 重复的DNA序列
- java 浅堆 深堆_JVM中的一个小知识点:深堆和浅堆的概念
- 【Redis】Redis 替代方案
- Mysql登录时出现Access denied for user ‘root‘@‘localhost‘ (using password YES)无法打开的解决方法
- eXosip认证头域authentication
- mysql锘縖_根据中文字符串查询拼音声母
- 未明学院:大学四年应当如何度过,才算不辜负?
- GRLDR外部MENU.LST调用GRLDR内部菜单
- Gartner:2017年十大科技趋势盘点
- 【51单片机】 利用定时器产生生日快乐歌
- Android Room 数据库详解
- Jenkins Mac本地环境搭建
热门文章
- C++ Exercises(十五)--排序算法的简单实现
- decode 大于比较 小于_6 燃气输配系统6.3 压力不大于1.6Mpa的室外燃气管道城镇燃气设计规范 GB500282006(2020修订版)...
- 【APP接口开发】常用HTTP响应头状态码详解
- js 控制超出字数显示省略号
- MapReduce 2 中一些基础数据类型
- SpringMVC4零配置--web.xml
- POJ 2240 ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
- 【慢慢学算法】:查找第k小数
- C# 读写ACCESS的OLE对象,演示图片与长文件的读写
- 更新!在线状态和用户的共存模式保持一致