原文: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 应用开发指南》
物物互联的时代已经到来,智能家居.智慧校园.智慧交通.可穿戴.无人机.全息投影,各种各样的新名词.黑科技层出不穷.当我们为五年前能够通过手机控制家电而欣喜若狂的时候,可曾憧憬过当前使用增强现实设备完成 ...
随机推荐
-
Lintcode 175. 翻转二叉树
-------------------- 递归那么好为什么不用递归啊...我才不会被你骗...(其实是因为用惯了递归啰嗦的循环反倒不会写了...o(╯□╰)o) AC代码: /** * Definit ...
-
虚拟机下linux安装mysql,apache和php
由于腿伤了,卧床在家折腾下linux,尝试用虚拟机装mysql,apche和php.中间各种波折,装了好几天,觉得有些经验还是要记录下来,让自己别忘了:) 按照下面这篇文章的方法,基本可以顺利安装成功 ...
-
利用POI 技术动态替换word模板内容
项目中需要实现一个功能,动态替换给定模板里面的内容,生成word文档提供下载功能. 中间解决了问题有: 1.页眉的文档logo图片解决,刚开始的时候,HWPFDocument 对象无法读取图片对象(已 ...
-
ADO,NET 实体类 和 数据访问类
啥也不说,看代码. --SQl中 --建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code ) pr ...
-
Floyd最小环
本文转自这里 最小环:从一个点出发,经过一条简单路径回到起点成为环.图的最小环就是所有环中长度最小的. 怎样求最小环呢? 1传统的解决方法(dijkstra): 任意一个最小环环的权值, ...
-
Erich Gamma
Erich Gamma是IBM的杰出工程师.他是Jazz项目的领头人之一,曾担任Eclipse的Java开发环境JDT项目的领导,目前是Eclipse的项目管理委员会成员.Erich也是经典书籍< ...
-
部署Win Server 2012十项注意
博文来自 http://server.zol.com.cn/351/3511746.html Windows Server 2012是微软公司在2012年推出的面向中小企业应用一款全新的服务器操作系统 ...
-
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type &#39;com.thinkplatform.dao.UserLogDao&#39; available: expected at least 1 bean which qualifies as autowi
我出错的问题是: 检查:
-
PHP二维数组按照键值排序
在开发过程中,我们常常需要对二维数组按照数组的某个键来排序,这里提供两个封装好的方法,可以放到公共函数模块里以后需要的时候直接调用即可. /** * 二维数组按照键值降序排序 * @param arr ...
-
url的使用
1.urls.py 默认是在主目录中,主路由配置文件,会包含最基本的地址映射,并且每个地址访问都必须要先经过该文件. 作用:通过 urls中定义好的地址找到对应的视图处理函数 urlpatterns ...