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.util.zip - Recreating directory structure(转)
include my own version for your reference. We use this one to zip up photos to download so it works ...
- 搜索引擎爬虫蜘蛛的USERAGENT大全
搜索引擎爬虫蜘蛛的USERAGENT大全 搜索引擎爬虫蜘蛛的USERAGENT收集,方便制作采集的朋友. 百度爬虫 * Baiduspider+(+http://www.baidu.com/sea ...
- 创作gtk源码级vim帮助文档 tags
创作gtk源码级vim帮助文档 tags 缘由 那只有看到源码了.在linux源码上有个网站 http://lxr.linux.no /+trees, 可以很方面的查出相应版本的代码实现,gtk没有. ...
- (76) Clojure: Why would someone learn Clojure? - Quora
(76) Clojure: Why would someone learn Clojure? - Quora ★ Why would someone learn Clojure? Edit
- iOS 开发百问(6)
61.警告"addexplicit braces to avoid dangling else" 所谓"危急的else"是相似这种代码: if(a== 10) ...
- UVA 534 - Frogger(kruskal扩展)
UVA 534 - Frogger 题目链接 题意:给定一些点.如今要求一条路径从第一个点能跳到第二个点,而且这个路径上的最大距离是最小的 思路:利用kruskal算法,每次加最小权值的边进去,推断一 ...
- RIO包 健壮的I/O函数代码
下面是关于 #include <stdio.h> #include <string.h> #include <errno.h> #include <sys/t ...
- MSA2312 enclosure 闪断后
故障描述:由于电源原因,导致整个扩展柜闪断,硬盘全部为leftover状态. 存储划分配置:之前满配的一套MSA2312,划分为4个vd,后面两个vd无影响,前面2个VD都是一半在1号柜子,一半在2号 ...
- java Process在windows的使用汇总(转)
最常用的是ant(java工程中流行),maven,及通用的exec(只要有shell脚本如.sh,.bat,.exe,.cmd等).而其实前两者不容易出错,后者却遇到了以下问题:Caused by: ...
- unity3D的FingerGestures小工具
夹 FingerGestures包结构 FingerGestures样例列表 设置场景 教程:识别一个轻敲手势 教程:手势识别器 教程:轻击手势识别器 教程:拖拽手势识别器 教程:滑动手势识别器 教程 ...