第五章:尺寸处理(4)

简介:

适合大小的时钟
Device类包含一个静态的StartTimer方法,可以让你设置一个触发周期性事件的定时器。 定时器事件的可用性意味着时钟应用程序是可能的,即使它仅以文本显示时间。
Device.StartTimer的第一个参数是以TimeSpan值表示的时间间隔。 定时器根据该间隔定期触发一个事件。 (你可以低至15或16毫秒,这大约是视频显示器上每秒60帧的帧速率的周期。)事件处理程序没有参数,但必须返回true才能使定时器继续运行。
FitToSizeClock程序创建一个标签来显示时间,然后设置两个事件:页面上的SizeChanged事件以更改字体大小,以及每秒一次的Device.StartTimer事件来更改Text属性。
现在许多C#程序员喜欢将小事件处理程序定义为匿名lambda函数。 这允许事件处理代码非常接近引发事件的对象的实例化和初始化,而不是文件中的其他位置。 它还允许在事件处理程序中引用对象而不将这些对象存储为字段。
在这个程序中,这两个事件处理程序都简单地更改了标签的属性,并且它们都被作为lambda函数使用,以便它们可以访问标签而不将其存储为字段:

public class FitToSizeClockPage : ContentPage
{
    public FitToSizeClockPage()
    {
        Label clockLabel = new Label
        {
            HorizontalOptions = LayoutOptions.Center, 
            VerticalOptions = LayoutOptions.Center
        };
        Content = clockLabel;
        // Handle the SizeChanged event for the page.
        SizeChanged += (object sender, EventArgs args) =>
        {
            // Scale the font size to the page width
            // (based on 11 characters in the displayed string).
            if (this.Width > 0)
                clockLabel.FontSize = this.Width / 6;
        };
        // Start the timer going.
        Device.StartTimer(TimeSpan.FromSeconds(1), () =>
        {
            // Set the Text property of the Label.
            clockLabel.Text = DateTime.Now.ToString("h:mm:ss tt");
            return true;
        });
    }
}

StartTimer处理程序为DateTime指定一个自定义格式字符串,其结果为10个或11个字符,但其中两个是大写字母,并且这些字符比平均字符宽。 SizeChanged处理程序隐式假定通过将字体大小设置为页面宽度的六分之一来显示12个字符:
201806072130480331
当然,横向模式下的文字要大得多:
201806072131110332
这个一秒计时器在每秒的开始时刻并不精确,因此显示的时间可能与同一设备上的其他时间显示不完全一致。 您可以通过设置更频繁的计时器记号使其更加准确。 性能不会受到太大的影响,因为显示屏每秒只能更改一次,并且在此之前不需要新的布局周期。

目录
相关文章
|
28天前
|
计算机视觉 Python
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
自适应缩放技术Letterbox通过计算缩放比例并填充灰边像素,将图片调整为所需尺寸,保持原始比例不变,广泛应用于目标检测领域。
28 1
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
|
4月前
|
容器
软件开发常见流程之物理像素导致图片变形问题如何解决,先把图缩放为原先的两倍,再缩放,利用Cutterman生成矢量图
软件开发常见流程之物理像素导致图片变形问题如何解决,先把图缩放为原先的两倍,再缩放,利用Cutterman生成矢量图
【视觉高级篇】19 # 如何用着色器实现像素动画?2
【视觉高级篇】19 # 如何用着色器实现像素动画?
87 0
【视觉高级篇】19 # 如何用着色器实现像素动画?2
|
数据可视化 异构计算
【视觉高级篇】19 # 如何用着色器实现像素动画?
【视觉高级篇】19 # 如何用着色器实现像素动画?
98 0
【视觉高级篇】19 # 如何用着色器实现像素动画?
|
前端开发
前端知识案例学习9-可调整尺寸得UI
前端知识案例学习9-可调整尺寸得UI
132 0
前端知识案例学习9-可调整尺寸得UI
案例03 补充:金字塔等图形边框的绘制
案例03 补充:金字塔等图形边框的绘制
254 0
案例03 补充:金字塔等图形边框的绘制
|
Android开发 容器
第五章:尺寸处理(6)
经验拟合文本在具有特定尺寸的矩形内拟合文本的另一种方法涉及基于特定字体大小凭经验确定呈现文本的大小,然后向上或向下调整该字体大小。 无论可访问性设置如何,此方法都具有在所有设备上工作的优势。但是这个过程可能很棘手:第一个问题是字体大小和渲染文本的高度之间没有干净的线性关系。
943 0
|
Android开发 iOS开发 Windows
|
Android开发 iOS开发
|
编解码 Android开发