旋转和锚
AnchorX和AnchorY属性为“缩放”和“旋转”属性设置缩放或旋转的中心,因此它们也会影响ScaleTo和RotateTo动画。
CircleButton程序将一个Button旋转一个圆圈,但不像你之前看到的那样。 该程序围绕屏幕中心旋转按钮,为此它需要AnchorX和AnchorY。
XAML文件将Button放在AbsoluteLayout中:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"x:Class="CircleButton.CircleButtonPage"><ContentPage.Padding><OnPlatform x:TypeArguments="Thickness"iOS="0, 20, 0, 0" /></ContentPage.Padding><AbsoluteLayout x:Name="absoluteLayout"SizeChanged="OnSizeChanged"><Button x:Name="button"Text="Tap Me!"FontSize="Large"SizeChanged="OnSizeChanged"Clicked="OnButtonClicked" /></AbsoluteLayout>
</ContentPage>

此程序为Button使用AbsoluteLayout的唯一原因是将Button精确放置在屏幕上的特定位置。 XAML文件在AbsoluteLayout和Button上设置相同的SizeChanged处理程序。 该事件处理程序将AbsoluteLayout的中心保存为名为center的Point字段,并保存从该中心到最近边缘的距离作为radius字段:

public partial class CircleButtonPage : ContentPage
{Point center;double radius;public CircleButtonPage(){InitializeComponent();}void OnSizeChanged(object sender, EventArgs args){center = new Point(absoluteLayout.Width / 2, absoluteLayout.Height / 2);radius = Math.Min(absoluteLayout.Width, absoluteLayout.Height) / 2;AbsoluteLayout.SetLayoutBounds(button,new Rectangle(center.X - button.Width / 2, center.Y - radius,AbsoluteLayout.AutoSize,AbsoluteLayout.AutoSize));}__
}

OnSizeChanged处理程序通过将Button定位在页面的水平中心来结束,但其顶边的半径距离超出AbsoluteLayout的中心:

回想一下,AnchorX和AnchorY属性必须设置为相对于Button的宽度和高度的数字。 AnchorX值为0表示Button的左边缘,值为1表示右边缘。 类似地,AnchorY值为0表示Button的顶部,值为1表示底部。
要围绕保存为中心的点旋转此按钮,必须将AnchorX和AnchorY设置为基于中心点的值。 Button的中心位于页面中心的正上方,因此AnchorX的默认值为0.5。 但是,AnchorY需要一个从Button顶部到中心点的值,但是以按钮高度为单位:

public partial class CircleButtonPage : ContentPage
{__async void OnButtonClicked(object sender, EventArgs args){button.Rotation = 0;button.AnchorY = radius / button.Height;await button.RotateTo(360, 1000);}
}

然后按钮围绕页面中心完全旋转360度。 这里正在进行中:

第二十二章:动画(八)相关推荐

  1. 第二十二章:洗净皮衣

    第二十二章:洗净皮衣 一种心态,希望找到,另外一种心态,不希望找到,两种心态相互的交织着,让李二陛下的内心相当的痛苦. "你又在这里胡思乱想呢."这个时候长孙皇后走了过来,对着李二 ...

  2. 【信息系统项目管理师】第二十二章 信息系统安全管理(考点汇总篇)

    [信息系统项目管理师]第二十二章 信息系统安全管理(考点汇总篇) 考点分析与预测 信息安全为高级科目独有的章节,在第三版教材中有66页的内容.需要掌握的知识点非常多,且知识点非常散,在考试中上午一般考 ...

  3. 第二十二章 管理是一种文化活动

    第二十二章 管理是一种文化活动 作者:成君忆 第二十二章管理是一种文化活动 古者率民,必先礼信而后爵禄,先廉耻而后刑罚,先亲爱而后律其身.故战者必本乎率身以励众士,如心之使四肢也. ―<尉缭子& ...

  4. stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...

  5. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

  6. 数字图像处理:第二十二章 基于模型的编码

    第二十二章基于模型的编码 目录 引言 基于对象的编码 基于模型的编码 作业 1. 引言 为了获得更高的压缩效率并保持一定的视频质量以支持超低码率(大约10kbps)双向视频应用,不考虑内容特点的仅仅针 ...

  7. DayDayUp:《机器崛起前传》第二十二章【蹒跚而来】读后感(文章源自网络)—听课笔记

    DayDayUp:<机器崛起前传>第二十二章[蹒跚而来]读后感(文章源自网络)-听课笔记 <机器崛起前传> 1.机器岂不能有自我?         计算机的发展历程可谓蹒跚.从 ...

  8. 第二十二章 5为你的命名空间取个别名

    //第二十二章 5为你的命名空间取个别名 /*#include <iostream> using namespace std; namespace people_compay_boss { ...

  9. 第二十二章 6未命名的命名空间

    //第二十二章 6未命名的命名空间 /*#include <iostream> using namespace std; namespace {int x=2; } namespace { ...

  10. 20190925 On Java8 第二十二章 枚举

    第二十二章 枚举 基本 enum 特性 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 Java.lang.Enum. valueOf() 是在 Enum 中定义的 static 方法 ...

最新文章

  1. ORM 一对一 以及csrf 的简单用法
  2. Android开发小问题集
  3. 如何确保sublime text每次启动时不会自动打开以前打开的文档
  4. 跟我学Shiro目录贴
  5. 知名投资机构董事总经理在培训中晕倒后去世,这个培训究竟是什么?
  6. 锁定Mac的键盘:连击5次option键
  7. python基础之python介绍
  8. 【AlphaGo之后会是什么】一文读懂人工智能打德扑
  9. linux leach仿真数据传输图性能,基于OMNeT-+-+的Leach协议的仿真研究.pdf
  10. 最新2016年春运抢票12306买下铺攻略
  11. BoundsChecker使用说明
  12. “华为跳槽内幕”:有钱没用,你得值钱
  13. ONIE——开放网络安装环境
  14. 如何在Google文档中添加文本框
  15. 【阅读摘要】第6章 电子元器件与组件的热设计
  16. 数据分析总结四:可视化与数据分析
  17. mysql中的left和right
  18. 为别人着想,是最大的利己
  19. inet_aton、inet_addr、inet_ntoa、inet_pton、inet_ntop
  20. 一键设置IP地址(快速设置ip地址)

热门文章

  1. 一个一直没想通的问题:为什么印度的软件外包能比中国强那么多?这应该是中国人的强项啊...
  2. 批量scp脚本——从多台机器拷贝文件
  3. 关于数据契约(DataContract)待续
  4. 求数组中的最长递增子序列
  5. 推荐六款帮助你实现惊艳视差滚动效果的 jQuery 插件
  6. 不负众望,窝窝世界新版放出(内测):P
  7. 全国省市编码_地区编码
  8. 《linux内核设计与实现》第一章
  9. iOS开发UI篇—CAlayer(创建图层)
  10. MySQL_前缀索引_建立