新聞中心
Windows 8.1 Preview 為應(yīng)用內(nèi)文件管理提供增強(qiáng)支持,應(yīng)用可訪問的用戶庫選擇范圍更寬以及可以將應(yīng)用的唯一內(nèi)容推送至 Windows 索引。 這意味著你的應(yīng)用可輕松訪問用戶內(nèi)容并且使其自身內(nèi)容輕松顯示給其他應(yīng)用。

創(chuàng)新互聯(lián)專注于濰坊企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,電子商務(wù)商城網(wǎng)站建設(shè)。濰坊網(wǎng)站建設(shè)公司,為濰坊等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Windows 8.1 Preview 中的新特性或更新
- 更新后的文件選取器支持新的應(yīng)用顯示模式
- 應(yīng)用內(nèi)的用戶庫管理
- 檢索父文件或文件夾
- 使用 IsEqual 來比較文件
- 新增的 KnownFolders 屬性
- 文件檢索時無錯誤處理要求
- 在打開(方式)應(yīng)用場景中允許查看文件
- 將應(yīng)用內(nèi)容添加到 Windows 索引中
- Microsoft SkyDrive
- DDS 圖像文件支持
更新后的文件選取器支持新的應(yīng)用顯示模式
在 Windows 8.1 Preview 中,以拆分屏幕和全屏顯示方式運行的應(yīng)用可以調(diào)用文件選取器。這有助于用戶操作,并且可以根據(jù)他們的需要,執(zhí)行多項任務(wù)。例如,假如用戶在一個窗口中打開 了 Skype 會話,而在另一窗口中打開了電子郵件應(yīng)用,電子郵件應(yīng)用可以為用戶打開文件選取器以便包含一個附件,而此時應(yīng)用無需轉(zhuǎn)成全屏顯示。若要了解有關(guān)使用文件選 取器的詳細(xì)信息,請參閱快速入門:使用文件選取器訪問文件。
應(yīng)用內(nèi)的用戶庫管理
Windows 8.1 Preview 引入了 StorageLibrary 類,該類允許用戶在應(yīng)用內(nèi)管理其個人庫(例如“音樂”和“視頻”)中的文件夾。這在媒體庫應(yīng)用中特別有用,因為用戶通常需要添加含有大量圖像、音樂或視頻的文件夾來擴(kuò)展其集合。
經(jīng)過特殊化處理的文件選取器可以實現(xiàn)上述需求,使用 StorageLibrary 方法進(jìn)行調(diào)用后,允許用戶將文件夾添加到他們的庫中。用戶不再需要退出應(yīng)用并轉(zhuǎn)到桌面上來擴(kuò)展他們的媒體集合。
Note 新的 StorageLibrary 類還可以定義一個從庫中刪除文件的方法,但是若要在應(yīng)用中實現(xiàn)該功能,則需要自定義的 UI 元素。
檢索父文件或文件夾
Windows 8 的存儲 API 沒有定義直接檢索存儲項的父文件夾的方法,所以要求你編寫自己的自定義邏輯。在 Windows 8.1 Preview 中,你可以使用 GetParentAsync 方法獲取文件或文件夾的父 StorageFolder。
Important 要讓 GetParentAsync 方法成功,你必須擁有對父級的訪問權(quán)限,可通過聲明庫能力或在未來訪問列表中保留更高級的文件夾實現(xiàn)。 此外,如果你無法訪問父文件或文件夾,此方法也不會拋出異常,而是返回 null。
使用 IsEqual 來比較文件
若要直接比較各個存儲項以確定它們是否表示的是相同的項,Windows 8 的存儲 API 并沒有定義此方法。開發(fā)人員通過比較路徑來解決這個問題,然而他們?nèi)钥赡軙龅讲痪邆渎窂街档拇鎯?。?Windows 8.1 Preview 中,你可以使用 IsEqual 方法來確定兩個存儲項是否顯示的是相同的文件。
下面的示例顯示了如何使用新方法比較兩個存儲文件是否相同。
- function openNewFile() {
- var picker = new Windows.Storage.Pickers.FileOpenPicker;
- picker.fileTypeFilter.replaceAll(["*"]);
- picker.pickSingleFileAsync().then(function (file) {
- var alreadyOpenedFile = null;
- _openFiles.some(function (openFile) {
- if (file.IsEqual(openFile.file)) {
- alreadyOpenedFile = openFile;
- return true;
- }
- return false;
- });
- if (alreadyOpenedFile != null) {
- alreadyOpenedFile.window.activate();
- } else {
- createNewFileViewerWindow(file);
- }
- });
- }
新增的 KnownFolders 屬性
Windows 8.1 Preview 引入了兩個新 KnownFolders 屬性,這允許你在兩個其他的位置訪問文件:CameraRoll 和 Playlists。
KnownFolders.CameraRoll 屬性允許你訪問使用設(shè)備相機(jī)拍攝的圖片—這跟現(xiàn)有的 Windows Phone 8 屬性相似。KnownFolders.Playlists 屬性允許你訪問用戶的播放列表
文件檢索時無錯誤處理要求
Windows 8.1 Preview 引入的 StorageFolder.TryGetItemAsync 方法允許應(yīng)用嘗試按照名稱來檢索文件或文件夾,無需在應(yīng)用代碼中添加錯誤捕捉邏輯。如果找不到文件或文件夾,TryGetItemAsync 返回 null,并不拋出異常。因為該方法返回 null,你也可以使用它來確定是否存在特定的文件或文件夾。
在打開(方式)應(yīng)用場景中允許查看文件
在 Windows 8.1 Preview 中,你可以使用 NeighboringFilesQuery 屬性,瀏覽激活應(yīng)用的文件周圍的文件。
在 Windows 8 中,使用特定文件關(guān)聯(lián)打開內(nèi)容的默認(rèn)應(yīng)用只能獲得一個代表所調(diào)用文件的對象。 這對于媒體庫應(yīng)用而言是一個問題,因為用戶希望瀏覽周圍的文件。在 Windows 8.1 Preview 中,默認(rèn)應(yīng)用可以獲得周圍 視圖中的文件集合—即從中選擇所調(diào)用文件的集合。
你的應(yīng)用需要聲明特定的庫功能,以便獲取相應(yīng)類型的條目。 例如,若要獲取 NeighboringFilesQuery 中的圖片,應(yīng)用必須聲明“圖片庫”功能。
本示例顯示了如何檢索激活應(yīng)用的文件周圍的文件集合。
- function activated(sender, e) {
- if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.file && e.files.size > 0) {
- var invokedFile = e.detail.files[0];
- var neighboringFiles = e.detail.neighboringFilesQuery;
- if (neighboringFiles) {
- result.neighboringFiles.findStartIndexAsync(e.detail.files[0]).done(function (index) {
- var invokedFileElement = document.getElementById("invokedFile");
- invokedFileElement.textContent = "Invoked item: " + invokedFile.name + ", at index " + index + " in view file enumeration.";
- var prevFileslist = document.getElementById("prevFilesList");
- result.neighboringFiles.getFilesAsync(0, index).done(function (fileList) {
- fileList.forEach(function (file) {
- // Create an entry in the list for the file.
- var fileItemElement = document.createElement("li");
- fileItemElement.textContent = file.name;
- prevFileslist.appendChild(listItemElement);
- });
- },
- function (error) {
- // Handle error trying to get list of files.
- });
- var nextFileslist = document.getElementById("nextFilesList");
- result.neighboringFiles.getFilesAsync(index + 1, -1).done(function (fileList) {
- fileList.forEach(function (file) {
- // Create an entry in the list for the file.
- var fileItemElement = document.createElement("li");
- fileItemElement.textContent = file.name;
- nextFileslist.appendChild(listItemElement);
- });
- },
- function (error) {
- // Handle error trying to get list of files.
- });
- },
- function (error) {
- // Handle error trying to get file index.
- });
- }
- }
- }
- app.addEventListener("activated", activated);
#p#
將應(yīng)用內(nèi)容添加到 Windows 索引中
在 Windows 8.1 Preview 中,可以直接將應(yīng)用內(nèi)容添加到 Windows 索引。將應(yīng)用內(nèi)容添加到索引中可以確保在使用 ApplicationIndexedContent 文件夾的查詢或使用新增的應(yīng)用內(nèi)搜索控件時,快速搜索應(yīng)用內(nèi)容。你可以使用 Windows.Storage.Search 中新增的 API 集,或者通過創(chuàng)建 "appcontent-ms" 文件,在索引中添加文件屬性和內(nèi)容。
SkyDrive
在 Windows 8.1 Preview 中,SkyDrive 提供兩項全新的功能更新:
- 文件存儲
讓 SkyDrive 成為用戶文檔、圖片和視頻的默認(rèn)存儲位置,可將 SkyDrive 輕松集成到你的應(yīng)用。只要實例化應(yīng)用中的 FileSavePicker 或 FileOpenPicker 對象,默認(rèn)情況下文件選取器就會打開 SkyDrive。但用戶必須登錄自己的 Microsoft 帳戶才能實現(xiàn)此操作。(也可將文件選取器的 SuggestedStartLocation 屬性設(shè)置到非 SkyDrive 的位置。)
- SkyDrive 存儲管理工具
我們改進(jìn)了 Windows 8.1 Preview 上的 SkyDrive 存儲配額管理體驗。用戶可直接從 Windows 管理 SkyDrive,無需轉(zhuǎn)到 skydrive.com。他們可查看存儲使用情況、升級存儲計劃并回收 SkyDrive 上的空間,完全無需離開 Windows 8.1 Preview 界面。
DDS 圖像文件支持
使用 JavaScript 和可擴(kuò)展應(yīng)用程序標(biāo)記語言 (XAML) WebView 控件的 Windows 應(yīng)用商店應(yīng)用現(xiàn)在支持 Microsoft DirectDraw 表面 (DDS) 文件格式,從而使你能夠創(chuàng)建運行速度更快的 WebGL 應(yīng)用,這類應(yīng)用即使是在使用較大紋理的情況下,也能更快速地運行 。
關(guān)于塊壓縮和 DDS
塊壓縮 (BC) 是一種用于在 DirectDraw 表面 (DDS) 文件中存儲像素數(shù)據(jù)的壓縮類。與其他圖像文件格式不同,圖形處理器 (GPU) 可以直接從塊壓縮格式中采樣,而無需任何解壓縮或處理,從而能夠改進(jìn)在 Windows 應(yīng)用商店應(yīng)用中加載紋理資源的性能。對于 BC 格式,平均每個像素使用 4-8 位,而對于常規(guī)的 RGBA 紋理,每個像素使用 32 位。因此,塊壓縮格式還能將總 GPU 內(nèi)存使用量降低多達(dá) 87.5%,從而允許在 Windows 應(yīng)用商店應(yīng)用中使用大量或較高質(zhì)量的資產(chǎn)。
盡管有很多塊壓縮算法,但 Windows 8.1 Preview 上使用 JavaScript 和 XAML WebView 控件的 Windows 應(yīng)用商店應(yīng)用在 DDS 文件格式中只支持三種類型的塊壓縮:BC1、BC2 和 BC3。由于經(jīng)過塊壓縮的 DDS 圖像幾乎不需要任何 CPU 解碼時間,因此它的加載速率比 JPEG 圖像快得多,同時由于塊壓縮使用的 GPU 內(nèi)存較少,你還可以使用更多的紋理資源。經(jīng)過塊壓縮的 DDS 文件是適用于內(nèi)置游戲背景和紋理的理想圖像格式。
如何在 DDS 文件中使用塊壓縮
在使用 JavaScript 或 XAMLWebView 控件的 Windows 應(yīng)用商店應(yīng)用中將你的圖像資產(chǎn)轉(zhuǎn)換為塊壓縮格式時,需要考慮以下限制:
- 僅支持與以下 DXGI_FORMAT 枚舉值對應(yīng)的 BC1、BC2 和 BC3 塊壓縮格式:
- DXGI_FORMAT_BC1_UNORM
- DXGI_FORMAT_BC2_UNORM
- DXGI_FORMAT_BC3_UNORM
- 必須使用預(yù)乘 Alpha。支持使用顯式定義預(yù)乘 Alpha(DXT1、DXT2 和 DXT4)的格式的舊 DDS 文件,以及使用 DDS_HEADER_DX10 結(jié)構(gòu)和有效 DDS_ALPHA_MODE 值(DDS_ALPHA_MODE_OPAQUE 和 DDS_ALPHA_MODE_PREMULTIPLIED)的新 DDS 文件。
- X 和 Y 維度必須是 4 像素的倍數(shù)。
- DDS 中不支持立體紋理、立方圖、mipmap 或紋理格式。
如果你不遵守這些限制,你的 DDS 文件將無法加載到使用 JavaScript 或 XAML WebView 控件的 Windows 應(yīng)用商店應(yīng)用中。有關(guān)詳細(xì)信息,請參閱此鏈接。
在 DDS 文件中創(chuàng)建塊壓縮資產(chǎn)后,可以在標(biāo)記中加載 DDS 文件,或通過 JavaScript 進(jìn)行加載:
HTML
JavaScript
- var img = new Image();
- img.src = “sample.dds”;
何時使用塊壓縮格式
如上所述,經(jīng)過塊壓縮的 DDS 文件可顯著增加你能夠在 Windows 應(yīng)用商店應(yīng)用中使用的較大紋理的數(shù)量,并且可以提高應(yīng)用的加載速度。但是,盡管經(jīng)過塊壓縮的 DDS 文件在 GPU 內(nèi)存使用方面更加高效,而與 JPEG 文件相比,卻占用較多的磁盤空間。經(jīng)過塊壓縮的 DDS 文件格式不適合通過網(wǎng)絡(luò)下載,因此最好將這類文件用作應(yīng)用程序包中的本地資產(chǎn)。盡管在 Internet Explorer 11 Preview 上支持經(jīng)過塊壓縮的 DDS 文件,但由于需要較高的網(wǎng)絡(luò)成本,因此不推薦在 Web 上使用這種格式。
由于塊壓縮格式會降低質(zhì)量,因此就像使用其他類似的格式那樣,必須確保在轉(zhuǎn)換為塊壓縮格式時不會降低視覺質(zhì)量。塊壓縮對于真實的“自然”圖像處理效果非常好,但對于強(qiáng)烈的漸變和色移會出現(xiàn)失真。
原文鏈接:http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182881.aspx
網(wǎng)頁名稱:Windows8.1之文件
分享鏈接:http://www.dlmjj.cn/article/cdighhc.html


咨詢
建站咨詢
