【Win 10应用开发】如何知道UAP在哪个平台上运行
面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行。尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑。比如一串数据列表,我希望如果在桌面上运行时就以横向列表展现;但要是运行在手机上就以纵向列表展现。
也就是说,其实我们只需分析两种情况即可:
一、桌面。(台式机、笔记本、平板、游戏机、发广告专用机、导航器……)
二、移动环境。其实就是手机。
那么,有啥办法可判断呢?勿急,老周先告诉你,方法比较简单。咱们先看一段代码:
var context = ResourceContext.GetForCurrentView();string s = string.Empty;foreach (var item in context.QualifierValues){s += item.Key + " : " + item.Value;s += "\n";}tb.Text = s;
ResourceContext类在Windows.ApplicationModel.Resources.Core命名空间下,就是用于访问与当前应用程序的限定资源的API,也可以把这个“资源”理解为应用程序的一些配置信息,如什么语言的,日语的还中文的;什么主题基调的,浅色还是深色;什么比例的,缩放100%还是180%……
调用ResourceContext.GetForCurrentView()方法可以直接得到ResourceContext实例,再通过QualifierValues属性得到一个字典数据:Key为字符串,Value也是字符串。QualifierValues属性表示该资源的限定符集合。
悟性高的朋友可能已经猜到其中的玄机了,不过猜不到也不用急,现在我们用上面的代码做两件事,做完这两件事你就会明白了。
第一件事,在本地计算机和平板模拟器上运行应用,然后得到如下图的结果:
第二件事,在手机模拟器上运行一下,得到结果如下:
不知道你看懂了没,如果还没有看出其中的奥妙,那老周就揭晓了:在资源限定符字典中,有一条记录的Key为DeviceFamily,如果在桌面上运行的话,它的Value就是Desktop;如果在手机上运行,Value就是Mobile。
怎么样,现在懂了吧?
那么,你猜猜,如果判断UAP正在运行的设备,该想到方法了吧。
老周给出个例子,界面上有个StackPanel容器,里面放了几块正方形的烧饼。如果在桌面上运行,烧饼就横着放;如果在手机上运行,烧饼就竖着放,以方便用户流口水。
XAML代码如下:
<StackPanel Margin="15" Name="panel"><Rectangle Margin="14" Width="125" Height="125" Fill="Yellow"/><Rectangle Margin="14" Width="125" Height="125" Fill="Red"/><Rectangle Margin="14" Width="125" Height="125" Fill="Pink"/><Rectangle Margin="14" Width="125" Height="125" Fill="Orange"/></StackPanel>
处理代码如下:
// 得到资源上下文对象ResourceContext resContext = ResourceContext.GetForCurrentView();// 访问键名为DeviceFamily的值string value = resContext.QualifierValues["DeviceFamily"];// 分析if (value == "Desktop"){panel.Orientation = Orientation.Horizontal;}else{panel.Orientation = Orientation.Vertical;}
OK,首先,在本地计算机上运行一下,结果如下:
接着,在手机模拟器上运行,结果如下:
看来这个DeviceFamily确实很Family。
补充:后来发现,访问Windows.System.Profile.AnalyticsVersionInfo.DeviceFamily属性也可以获得平台名称。
本文例子下载地址:http://files.cnblogs.com/files/tcjiaan/deviceFamilySmp.zip
【Win 10应用开发】如何知道UAP在哪个平台上运行相关推荐
- 【Win 10 应用开发】RTM版的UAP项目解剖
原文:[Win 10 应用开发]RTM版的UAP项目解剖 Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以 ...
- 【Win 10 应用开发】Toast通知激活应用——前台后台
原文:[Win 10 应用开发]Toast通知激活应用--前台&后台 老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎 ...
- 【Win 10应用开发】SplitView控件
[Win 10应用开发]SplitView控件 原文:[Win 10应用开发]SplitView控件 SplitView控件用于呈现分隔视图,简单地说,就是把一个视图分割为两部分,Content属性所 ...
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
原文:[Win 10应用开发]Adaptive磁贴模板的XML文档结构 在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴 ...
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
转载:http://blog.csdn.net/iamlazybone/article/details/17191539 懒骨头(http://blog.csdn.net/iamlazybone Q ...
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应...
2019独角兽企业重金招聘Python工程师标准>>> 上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上. 开始干活! 其实步骤可以参考 Cocos2 ...
- 【Win 10 应用开发】导入.pfx证书
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...
- 【Win 10 应用开发】在代码中加载文本资源
记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...
- 地平线 旭日X3 SDB开发板 (四) yolov3自训练模型板上运行流程记录
文章目录 一.准备工作 二.检查模型 三.板上运行 四.参考 一.准备工作 onnx 1.5 Opset version 10 自己训练的darknet模型 yolov3 darknet 转 onnx ...
最新文章
- 截断句子取前k个单词
- dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type
- Hadoop 学习笔记 (十一) MapReduce 求平均成绩
- python进程共享全局变量 时延_Python 进程之间共享数据(全局变量)的方法
- 201107阶段二Linux-qt编程
- echarts解决自适应图表被压缩问题
- B-树 B+树复习总结
- Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
- 设置html按钮点击事件无效果,css怎么设置按钮不能点击?
- input内强制保留小数点后两位 位数不足时自动补0
- 【SpringCloud】 spring cloud 2021年 技术 更新换代 停更 等信息
- MySQL查询GROUP BY日/月/年
- css让div背景变成半透明
- 【数据分析】重要环节--缺失值怎么处理
- 如何关闭“数据执行保护”?
- linux灵活提取ip脚本
- ADCIRC模式与Python融合技术应用
- 【Python】安装pip
- metaball公式_parametric.是什么意思
- 沟通CTBS V5.0确保立白集团核心数据万无一失