首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在c# (xamarin跨平台app)中获取屏幕尺寸

在C#(Xamarin跨平台App)中获取屏幕尺寸可以通过以下方式实现:

  1. 使用DeviceDisplay.MainDisplayInfo属性获取主显示设备的信息,包括屏幕尺寸和分辨率。
代码语言:txt
复制
using Xamarin.Essentials;

var mainDisplayInfo = DeviceDisplay.MainDisplayInfo;
var screenWidth = mainDisplayInfo.Width;
var screenHeight = mainDisplayInfo.Height;
  1. 使用DependencyService在各个平台上调用相应的原生API获取屏幕尺寸。

首先,在共享代码项目中创建一个接口,定义获取屏幕尺寸的方法:

代码语言:txt
复制
public interface IScreenSizeService
{
    Size GetScreenSize();
}

然后,在各个平台的原生项目中实现该接口:

在Android项目中,创建一个类ScreenSizeService,实现IScreenSizeService接口:

代码语言:txt
复制
using Xamarin.Forms;
using YourAppName.Droid;
using Android.Content;
using Android.Util;

[assembly: Dependency(typeof(ScreenSizeService))]
namespace YourAppName.Droid
{
    public class ScreenSizeService : IScreenSizeService
    {
        public Size GetScreenSize()
        {
            var displayMetrics = Android.App.Application.Context.Resources.DisplayMetrics;
            var screenWidth = displayMetrics.WidthPixels / displayMetrics.Density;
            var screenHeight = displayMetrics.HeightPixels / displayMetrics.Density;
            return new Size(screenWidth, screenHeight);
        }
    }
}

在iOS项目中,创建一个类ScreenSizeService,实现IScreenSizeService接口:

代码语言:txt
复制
using Xamarin.Forms;
using YourAppName.iOS;
using UIKit;

[assembly: Dependency(typeof(ScreenSizeService))]
namespace YourAppName.iOS
{
    public class ScreenSizeService : IScreenSizeService
    {
        public Size GetScreenSize()
        {
            var bounds = UIScreen.MainScreen.Bounds;
            var screenWidth = bounds.Width;
            var screenHeight = bounds.Height;
            return new Size(screenWidth, screenHeight);
        }
    }
}

最后,在共享代码中调用DependencyService获取屏幕尺寸:

代码语言:txt
复制
var screenSizeService = DependencyService.Get<IScreenSizeService>();
var screenSize = screenSizeService.GetScreenSize();
var screenWidth = screenSize.Width;
var screenHeight = screenSize.Height;

这样就可以在C#(Xamarin跨平台App)中获取屏幕尺寸了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Xamarin 学习笔记 - 配置环境(Windows & iOS)

    一直以来,做为一名Web以及桌面开发人员,我一直在使用.NET框架和C#语言,而在某些项目中,Angular会在前端占有主导地位。 最近,我们总是谈论移动应用程序开发的未来,但我本身实在没有天赋转向另一种语言。最近几年,针对我的社交项目,我尝试使用Hybrid框架和AngularJS以及Ionic,Cordova一起构建一个示例……但一切并不像我想象得那样容易。此后微软于2016年2月份收购了Xamarin并在之后不久宣布了将Xamarin开源。自此微软生成用C#开发的软件将不仅仅能够运行在Windows上,而是可以在任何设备上运行。继微软收购Xamarin之后,对可以将C#开发与全功能的跨平台移动开发工具相结合,使用开发工具共享业务逻辑代码,以提供完全原生的应用程序的专业人士的需求日益增加,这一点自从2011年之后就一发不可收拾。

    02

    几种跨平台方案的比较

    原生应用程序在使用新功能时带来的困扰是最少的。由于应用程序是使用平台供应商自己(Apple 或 Google)的控件构建,为了让用户体验更加符合给定的平台,因此他们通常遵循这些供应商制定的设计指南。大多数情况下,原生的应用将会比那些跨平台构建的应用性能要好一些,尽管在很多情况下两者的差异可以忽略不计,不过具体还要取决于底层跨平台技术。原生应用的一大优势是:当需要时,他们可以立即采用 Apple 和 Google 在测试版中开发的新技术而不用等待第三方的集成。构建原生应用的主要缺点是缺乏跨平台的代码复用,如果同时开发 iOS 和 Android 应用,那么开发成本可能会很高。

    02

    移动开发的跨平台技术演进

    我是2010年开始从事的Android开发,当时会Android和iOS开发的很少,也不火,所有人都在“摸着河底过河”,项目更没有第三方框架一说,大都是自己写的,不像现在各种的框架满天飞。随着移动开发的发展,互联网公司也是层出不穷,有些公司迫于竞争,想要更迅速的更省成本的进行开发,就不再满足Android端一套代码,iOS端一套代码。与此同时,其他技术领域和各大公司也都觊觎着这份大蛋糕,纷纷推出相关的技术,这样跨平台技术应运而生,并且开始在公司中生根发芽。 Android和iOS生态太大了,我们可以把它们比作第一级生态,想要颠覆这两个系统的曾经出现过,但都失败了,因此建立次级生态是最稳妥的策略,Android平台更加开放,因此次级生态的中心就是Android,次生态的形式多种多样,比如在Android系统的基础上魔改建立自己的生态,再或者推出各种跨平台技术建立生态。跨平台技术产生的框架实在太多了,很多还没等我们去学去了解,它们就没落了,成为了跨平台技术的发展的一个过度产物。跨平台技术的产物是不靠谱还是趋势,我想读完本篇文章你会有自己的理解。 跨平台技术的分类没有标准的答案,这里把它们分类为5种,分别Web App、Hybrid App、语言编译转换、原生渲染、自绘UI。下面分别介绍它们。

    02
    领券