C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。
原文:C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。
一般我们在开发Windows Phone App,有时会需要修改锁定画面,而锁定画面的程式码又臭又长,若日後还有很多支APP需要使用到这个功能,岂不是要打很多次?所以我们何不创建一个自定义类别,将锁定画面的功能写一次就好了,日後若有其他专案使用到该功能,我们只要引入Class或Dll参考即可。
?
本篇文章将引导您自制LockScreen 锁定画面类别,从【网路图片】、【Assets资源】、【UI】设定锁定画面。
?
制作修改锁定画面的APP必须要先修改【WMAppManifest.xml】
参阅 :
C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
?
先看如何使用,我们可以透过【Uri】、【WriteableBitmap】、【UIElement】来操作,
Code部分相当的简短,因为我们透过自定义类别来帮我们完成了,此外也可以保持主程式的画面整洁 :
?
1: //从Assets中的资源设定锁定画面
2: Uri uri = new Uri("Assets/Tiles/FlipCycleTileLarge.png", UriKind.Relative);
3: LockScreen.SetBitmap(uri);
4: ?
5: //从网路图片设定锁定画面
6: Uri uri_Net = new Uri("http://ppt.cc/vJH3", UriKind.Absolute);
7: LockScreen.SetBitmap(uri_Net);
8: ?
9: //从UI设定锁定画面
10: LockScreen.SetBitmap(LayoutRoot);
?
自定义类别如下,说明一并打在程式码当中,请各位客观慢用 :
?
1: public class LockScreen
2: {
3: //从Uri设定锁定画面
4: public async static void SetBitmap(Uri uri ) {
5: //若未在WMAppManifest.xml加入Extensions则结束
6: if (! await ComfirmDialog()) {
7: return;
8: }
9: //将Uri转换成Bitmap
10: BitmapImage bitmapImage = new BitmapImage();
11: bitmapImage.CreateOptions = BitmapCreateOptions.None;
12: bitmapImage.UriSource = uri;
13: bitmapImage.ImageOpened += (s, e) =>
14: {
15: //载入完成,必须要等到BitmapImage载入完成才能继续,否则等於白做
16: WriteableBitmap wbm = new WriteableBitmap((BitmapImage)s);
17: //将Bitmap转换成WriteableBitmap
18: Uri uri_Net = new Uri(WriteImageToFile(new WriteableBitmap(wbm)), UriKind.Absolute);
19: //设定锁定画面
20: Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri_Net);
21: };
22: }
23: //从WriteableBitmap设定锁定画面
24: public async static void SetBitmap(WriteableBitmap writeableBitmap)
25: {
26: //若未在WMAppManifest.xml加入Extensions则结束
27: if (!await ComfirmDialog())
28: {
29: return;
30: }
31: Uri uri_UI = new Uri(WriteImageToFile(writeableBitmap), UriKind.Absolute);
32: Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri_UI);
33: }
34: ?
35: //从UIElement设定锁定画面
36: public async static void SetBitmap(UIElement uielement)
37: {
38: //若未在WMAppManifest.xml加入Extensions则结束
39: if (!await ComfirmDialog())
40: {
41: return;
42: }
43: Uri uri_UI = new Uri(WriteImageToFile(new WriteableBitmap(uielement, null)), UriKind.Absolute);
44: Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri_UI);
45: }
46: ?
47: //判断该APP是否已向系统申请修改锁定画面,若为False则未在WMAppManifest.xml加入Extensions
48: public async static Task<bool> ComfirmDialog(){
49: try
50: {
51: var isProvider = Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication;
52: //若尚未申请
53: if (!isProvider)
54: {
55: //跳出视窗询问使用者,是否授权该APP可以修改锁定画面
56: var op = await Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();
57: isProvider = op == Windows.Phone.System.UserProfile.LockScreenRequestResult.Granted;
58: }
59: return true;
60: }
61: catch
62: {
63: Debug.WriteLine("请在WMAppManifest.xml加入Extensions");
64: Debug.WriteLine("参阅 : http://ppt.cc/5U07");
65: return false;
66: }
67: }
68: ?
69: //档案写入Isolate 回传 Uri路径
70: private static string WriteImageToFile(WriteableBitmap writeable_bitmap)
71: {
72: //档名A
73: string FileNameA = "/LockScreen/A.jpg";
74: //档名B
75: string FileNameB = "/LockScreen/B.jpg";
76: //最後使用的党名
77: string FileName = "";
78: try
79: {
80: ?
81: using (IsolatedStorageFile tStorage = IsolatedStorageFile.GetUserStoreForApplication())
82: {
83: //宣告存取IsolatedStorageFile的变数
84: var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
85: ?
86: //若为第一次A、B都不存在
87: if (!isolatedStorage.FileExists(FileNameA) && !isolatedStorage.FileExists(FileNameB))
88: {
89: //使用其中一个当作档名
90: FileName = FileNameA;
91: }
92: //若A存在则使用B名称来当作写入的档名
93: if (isolatedStorage.FileExists(FileNameA))
94: {
95: //删除A
96: isolatedStorage.DeleteFile(FileNameA);
97: //使用档名B
98: FileName = FileNameB;
99: }
100: //若B存在则使用A名称来当作写入的档名
101: if (isolatedStorage.FileExists(FileNameB))
102: {
103: //删除B
104: isolatedStorage.DeleteFile(FileNameB);
105: //使用档名A
106: FileName = FileNameA;
107: }
108: ?
109: //在独立存储区创建档案
110: IsolatedStorageFileStream fileStream = isolatedStorage.CreateFile(FileName);
111: //写入JPG图档,品质为100 (越低图片画质就越低)
112: writeable_bitmap.SaveJpeg(fileStream, writeable_bitmap.PixelWidth, writeable_bitmap.PixelHeight, 0, 100);
113: //关闭IO
114: fileStream.Close();
115: fileStream.Dispose();
116: tStorage.Dispose();
117: ?
118: }
119: //重组新的URI,并回传
120: return string.Format("ms-appdata:///local/{0}", FileName);
121: }
122: catch (Exception ex)
123: {
124: string tMsg = ex.Message;
125: return string.Empty;
126: }
127: }
128: ?
129: }
?
如此一来我们就自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面罗!
?
References :
Suki统整出来的自定义类别
C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
?
文章中的叙述如有观念不正确错误的部分,欢迎告知指正 谢谢
转载请注明出处,并且附上本篇文章网址 !? 感谢。
HOLIESTAR
DotBlogs Tags:
关连文章
C# Windows Phone App 开发,将 【清单型态】 的【ListBox】改为【格状型态】,并使用Binding放入资料。
[笔记]C# Windows Phone App 开发,邀请使用者对APP评分。
C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
Windows Phone 使用,改善Windows Phone 将照片同步到SkyDrive云端空间的【相片】、【影片】画质。
C# Windows Phone App 开发,自制LockScreen 锁定画面类别(Class),从【网路图片】、【Assets资源】、【UI】修改锁定画面。的更多相关文章
- C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
原文:C# Windows Phone App 开发,修改[锁定画面],从[Assets].[UI].[网路图片],并解决失灵问题. 一般我们在开发Windows Phone App,有时会希望透过应 ...
- 打造理想的Windows 10 APP开发环境的5个步骤
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:微软即将发布Windows 10手机版,实际上很多人现在已经开始在开发Windows ...
- XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发
XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发 使用 Scene 类在 XNA 中创建不同的场景(八) 摘要: 平方已经开发了一些 Windows Phone ...
- Windows Phone Studio-任何人都能开发Windows Phone App的在线工具
在一段时间的内测以后,微软于今天早些时候发布了其Windows Phone应用开发的在线工具,名字叫做Windows Phone Studio.其意义在于,通过简单的内容添加和样式选择,实现Windo ...
- Windows 8.1 store app 开发笔记
原文:Windows 8.1 store app 开发笔记 零.简介 一切都要从博彦之星比赛说起.今年比赛的主题是使用Bing API(主要提到的有Bing Map API.Bing Translat ...
- 【万里征程——Windows App开发】控件大集合2
以下再来看看一些前面还没有讲过的控件,只是控件太多以至于无法所有列出来,大家仅仅好举一反三啦. Button 前面最经常使用的控件就是Button啦,Button另一个有意思的属性呢.当把鼠标指针放在 ...
- Windows App开发之文件与数据
读取文件和目录名 这一节開始我们将陆续看到Windows App是如何操作文件的. 在Windows上读取文件名称.目录名 首先我们在XAML中定义一个Button和TextBlock,将读取文件/目 ...
- 一个小白App开发需要了解的基本技术
本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...
- 《Windows IoT 应用开发指南》
物物互联的时代已经到来,智能家居.智慧校园.智慧交通.可穿戴.无人机.全息投影,各种各样的新名词.黑科技层出不穷.当我们为五年前能够通过手机控制家电而欣喜若狂的时候,可曾憧憬过当前使用增强现实设备完成 ...
随机推荐
- Java生成文件
Java生成文件 1.说明 以文件路径作为參数,推断该文件是否存在,若不存在就创建文件.并输出文件路径 2.实现源代码 /** * @Title:BuildFile.java * @Package:c ...
- [Android学习笔记]LayoutInflater的使用
LayoutInflater用于动态载入布局,然后获取到布局中定义完成的控件引用 常在动态加载布局,和Adapter中用到 使用步骤:1.通过LayoutInflater加载xml布局文件2.从载入的 ...
- [Android学习笔记]some tips
集合合并去重: listA.removeAll(listB); listA.addAll(listB); android:singleLine="true"//单行显示 andro ...
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
- iOS 如何创建单例对象
一.什么是单例? 说到单例我就想起了我的java啊 ,不禁感叹起我的大学时光,学了4年的java开发,到现在还是放弃了我的java,踏入了iOS的行列. 算了,入正轨,我现在正是铁树银花的青春美少女, ...
- PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区
PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区 PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具
- cocos2dx游戏开发学习笔记3-lua面向对象分析
在lua中,能够通过元表来实现类.对象.继承等.与元表相关的方法有setmetatable().__index.getmetatable().__newindex. 详细什么是元表在这里就不细说了,网 ...
- hdu1896之优先队列应用
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Sub ...
- 通用型CRM还是行业型CRM?-定制为王
大数据时代,怎样利用工具摆脱繁杂的数据管理之苦,洞察有价值的销售信息,是每一个管理者的迫切须要.Zoho CRM问世10年来,见证了一个个行业客户怎样在CRM帮助下实现了效率和业绩提升.相同,广泛的 ...
- 你真的了解mysql的varchar字段的长度有多少吗?
今天在设计系统字段的时候, 发现自己对varchar还不够了解.我设了一个字段.类型为VARCHER,然后我就往里面测试性了写了东西.发现没有多少就满了.我觉得奇怪,5.5版本以上的MYSQL不是有6 ...