<WP8开发学习笔记>ApplicationBar(任务栏)的切换以及“黑条问题”
ApplicationBar(以下简称AppBar)是WP应用相当常见的控件,也很方便。常见的做法是pivot或者panorama的页面切换的时候,AppBar跟随切换对应的按钮或者不显示按钮,如下图。
这个方法比较简单,网上很容易找到资料,不过我还是简要的说一下。
首先要在页面资源里添加需要的AppBar,我这里添加了两个银色的AppBar。一个默认模式,一个最小化模式。
<phone:PhoneApplicationPage.Resources>
<shell:ApplicationBar x:Key="AppBar_1" BackgroundColor="Silver" Mode="Default" IsVisible="True">
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar1/add.png" Text="添加"/>
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar2/check.png" Text="确认"/>
</shell:ApplicationBar>
<shell:ApplicationBar x:Key="AppBar_2" BackgroundColor="Silver" IsMenuEnabled="True" Mode="Minimized" IsVisible="True">
</shell:ApplicationBar>
</phone:PhoneApplicationPage.Resources>
然后在Pivot的selectionChanged事件中修改对应的AppBar,第三个设置为NULL即没有AppBar,就完事啦。
private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (pivot.SelectedIndex == )
{
ApplicationBar = (Microsoft.Phone.Shell.ApplicationBar)Resources["AppBar_1"];
}
else if (pivot.SelectedIndex == )
{
ApplicationBar = (Microsoft.Phone.Shell.ApplicationBar)Resources["AppBar_2"]; }
else if (pivot.SelectedIndex == )
{
ApplicationBar =null ;
}
}
效果就是前面那个GIF的效果,但是你现在回去看前面那个GIF会发现切换的时候有个黑条,发生在AppBar改变高度的时候,在我实际使用中如果再在加上AppBarMenu的话,会产生更明显的黑条,并造成非常非常非常非常明显的卡顿。(手头的机子是920)
这个问题简直神坑,网上资料很少,所以我就传播一下找到的方法吧(●'◡'●),让AppBar”拥有透明特性“,即让opacity(透明度)不等于1。如果你想要的是纯色不透明的效果(其实也只有这种情况才会遇到这个问题。。。),opacity(透明度)设置为0.99,可以解决黑条问题,而且看起来仍然是纯色不透明的。
<phone:PhoneApplicationPage.Resources>
<shell:ApplicationBar x:Key="AppBar_1" BackgroundColor="Silver" Mode="Default" IsVisible="True" Opacity="0.99">
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar1/add.png" Text="添加"/>
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar2/check.png" Text="确认"/>
</shell:ApplicationBar>
<shell:ApplicationBar x:Key="AppBar_2" BackgroundColor="Silver" IsMenuEnabled="True" Mode="Minimized" IsVisible="True" Opacity="0.99">
</shell:ApplicationBar>
</phone:PhoneApplicationPage.Resources>
这样解决了黑条问题以及性能问题,事情会变成这样,怎么想都是微软的错。。。
下面的GIF就是opacity改成0.99后的效果,和前图的视觉效果没什么差,但是没有黑条流畅多了。
解释:以我的理解,如果AppBar的opacity为1,就会被认为是完全不透明,于是AppBar的”底下“就没必要加载应用的”UI的元素“,反正也看不到,所以它底下就是空白的frame页面,颜色和背景色的黑白设定一致(多数人是选的是黑色背景)。这时如果AppBar高度降低或者消失,一瞬间就会暴露底下的frame,让你看到相同大小的黑条或者白条,然后在frame上加载应有的UI元素(比如背景图案之类的),这也造成了一些卡顿感。。。如果AppBar是半透明的,它底下就是的UI元素在一开始就是加载好的(这样你才能透过AppBar看到它们),就不会出现黑条/白条,也不卡了。
有时候我们希望AppBar是纯色不透明的,把opacity设置为0.99,正常人看不出差异,但是系统认为他是半透明的。
<WP8开发学习笔记>ApplicationBar(任务栏)的切换以及“黑条问题”的更多相关文章
- <WP8开发学习笔记>获取手机的常用型号(如Lumia920,而非RM-822)
之前WP7时代可以用API获得WP手机的型号如lumia510,但是到了WP8后用APi只能获得硬件版本号了如RM-822,这种型号可以让我们更详细的了解具体的硬件版本,比如国行和港行,设备版本号不一 ...
- <WP8开发学习笔记>动态修改启动时导航的第一个页面(如登录前启动页为LoginPage,登录后变为MainPage)
很多时候我们需要在启动程序的时候根据状态改变初始导航页面,比如程序在启动的时候判断用户是否登录, 如果未登录则跳转到LoginPage.xaml否则跳转到MainPage界面. 这时候就要分析程序的启 ...
- <WP8开发学习笔记>修改panorama全景控件的标题的大小
panorama(全景)控件非常具有WinPhone特色,但是那个巨大的标题许多时候会让人觉得违和.怎么修改它呢? 最开始想到的是加一个FontSize,结果毫无影响.╮(╯-╰)╭ <phon ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- 高性能Cordova App开发学习笔记
高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
随机推荐
- jdk1.8的一些特性
一.jdk1.8的特性: Lambda表达式 函数式接口 方法引用 接口的默认方法和静态方法 Optional Streams 并行数组 新时间日期API 二.Lambda表达式: Lambda 表达 ...
- PAT-1133 Splitting A Linked List(链表分解)
Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long int ...
- ShoneSharp语言(S#)的设计和使用介绍系列(10)— 富家子弟“语句“不炫富
ShoneSharp语言(S#)的设计和使用介绍 系列(10)— 富家子弟“语句“不炫富 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sho ...
- wordpress获取当前分类的子分类
1.现在function.php里面添加下面的代码 function get_category_root_id($cat) { $this_category = get_category($cat); ...
- ## 0521Day04内部类
[重点] Math公式 静态导入 正则表达式 内部类 访问修饰符 [Math] Math包的相关方法: round:四舍五入:-10.9==>-11/-11.2==>-11 floor:向 ...
- nodejs模块介绍与使用
1.内置模块 http fs path url os等等 (无需安装直接require引入即可) 2.第三方模块: express mysql ejs等等 (npm包管理工具下载require引入) ...
- 读Pyqt4教程,带你入门Pyqt4 _011
当我们想要改变或者增强已存在的窗口组件时,或者准备从零开始创建自定义窗口组件时,可以使用绘图.我们通过使用PyQt4工具包提供的绘图API来绘图. 绘图在 paintEvent() 方法中进行.绘制代 ...
- DC-8靶机writeup
nmap -sV 172.16.61.129 -A 看下端口信息 nid=1 ‘ 报错,存在注入,扔到sqlmap跑 sqlmap -u http://172.16.61.129/?nid=1 --d ...
- tomcat session漏洞反序列化详解
1. 条件1)攻击者可以控制服务器上的文件名/文件内容2)tomcat context配置了persistencemanager的fileSotre3) persistenceManager 配置了s ...
- Rocket - interrupts - Nodes
https://mp.weixin.qq.com/s/BlW4y0Ez1kppxvSHAla31A 简单介绍interrupts相关的diplomacy节点. 1. IntImp 中断节点实现: 1) ...