热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第二十一章:变换(十二)

这两个问题都在非最小的BoxViewClock中得到解决。XAML文件与MinimalBoxViewClock非常相似,但代码隐藏文件更为广泛。它以名为HandPar

这两个问题都在非最小的BoxViewClock中得到解决。 XAML文件与MinimalBoxViewClock非常相似,但代码隐藏文件更为广泛。 它以名为HandParams的小结构开始,该结构定义每只手相对于半径的大小,但也包括偏移值。 这是手的总长度的一部分,表示它与钟面中心对齐的位置。 它也成为旋转的AnchorY值:

public partial class BoxViewClockPage : ContentPage
{// Structure for storing information about the three hands.struct HandParams{public HandParams(double width, double height, double offset) : this(){Width = width;Height = height;Offset = offset;}public double Width { private set; get; } // fraction of radiuspublic double Height { private set; get; } // dittopublic double Offset { private set; get; } // relative to center pivot}static readonly HandParams secondParams = new HandParams(0.02, 1.1, 0.85);static readonly HandParams minuteParams = new HandParams(0.05, 0.8, 0.9);static readonly HandParams hourParams = new HandParams(0.125, 0.65, 0.9);BoxView[] tickMarks = new BoxView[60];public BoxViewClockPage(){InitializeComponent();// Create the tick marks (to be sized and positioned later).for (int i = 0; i }

钟面周围的刻度线也是BoxView元素,但其中有60个具有两种不同的尺寸,它们使用您已经看过的技术定位。 考虑到没有Xamarin.Forms图形系统,视觉效果出奇的好:
2019_01_18_092557
最重要的是,你实际上可以告诉时间。
这个时钟有另一个有趣的功能,使手的运动相当迷人。 秒针既不会从第二个滑动到第二个也不会产生离散跳跃; 相反,它有一个更复杂的运动。 它略微向后拉,然后向前跳,但略微超过它的标记,
然后备份并休息。 这是怎么做到的?
在下一章中,您将看到Xamarin.Forms实现了几个缓动函数,这些函数可以通过更改动画“速度”来加速动画并加速动画,从而为动画添加真实感。。 这样的缓动函数已经成为整个计算机行业的标准,而Xamarin.FormsBook.Toolkit包含一个值转换器,它实现了一个称为后退缓动的缓动函数:

namespace Xamarin.FormsBook.Toolkit
{public class SecondBackEaseConverter : IValueConverter{public object Convert(object value, Type targetType,object parameter, CultureInfo culture){int seconds &#61; (int)((double)value / 6); // 0, 1, 2, ... 60double t &#61; (double)value / 6 % 1; // 0 --> 1double v &#61; 0; // 0 --> 1// Back-ease in and out functions from http://robertpenner.com/easing/if (t <0.5){t *&#61; 2;v &#61; 0.5 * t * t * ((1.7 &#43; 1) * t - 1.7);}else{t &#61; 2 * (t - 0.5);v &#61; 0.5 * (1 &#43; ((t - 1) * (t - 1) * ((1.7 &#43; 1) * (t - 1) &#43; 1.7) &#43; 1));}return 6 * (seconds &#43; v);}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){return (double)value;}}
}

BoxViewClock XAML文件中引用了此转换器&#xff1a;


您将在下一章中看到更多的缓动函数。



推荐阅读
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
GYuan83_844
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有