西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)其它知識 → 讓你的應用在WP7.8系統(tǒng)下支持大磁貼代碼演示

讓你的應用在WP7.8系統(tǒng)下支持大磁貼代碼演示

相關軟件相關文章發(fā)表評論 來源:西西整理時間:2013/3/30 9:03:35字體大小:A-A+

作者:西西點擊:9次評論:0次標簽: 大磁貼

  • 類型:源碼相關大。23.6M語言:中文 評分:9.1
  • 標簽:
立即下載

wp7.8 和wp8 Live Tile的區(qū)別在于wp7.8的第三方應用僅支持兩種大小的Tile 而wp8支持三種 應為wp8開放了三種模板供開發(fā)者使用,而wp7.8僅有一種模板那就是TileTemplate5,這也是默認的。Tile展示方式。TileTemplate5 只能夠使用一種大小,它與 Windows Phone 8 中等大小相對應。

既然wp7.8支持大磁貼的話 那么 wp8 引用 Microsoft.Phone.Shell 下的三種模板如果通過反射的方式 ,wp7.8肯定也能支持,(WP8三種模板了解 給出鏈接http://www.silverlightchina.net/html/zhuantixilie/winphone7/2012/1229/21142.html)

這里通過反編譯wp8下的Filp模板。當然也可以反射Cycle和 Icon 只要屬性和方法和反射中的一一對應就OK

好了用過代碼演示:

1:如果想讓你的應用支持大磁貼的話(WP8除外) 就必須判斷你手機版本是 7.5還是7.8

新建一個 CheckOSVersion類  // wp7.8的最低版本是8858所以就用8858最低版本來判斷

public class CheckOSVersion

{

   private static Version TargetedVersion;

        public static bool IsTargetedVersion        

    {        

     get             {   return Environment.OSVersion.Version >= CheckOSVersion.TargetedVersion;             }    

       }

        static CheckOSVersion()         {             CheckOSVersion.TargetedVersion = new Version(7, 10, 8858);         }

}

2: 創(chuàng)建反射shell.dll的方法

 private static void SetProperty(object instance, string name, object value)
        {
            Methodinfo setMethod = instance.GetType().GetProperty(name).GetSetMethod();
            object[] objArray = new object[1];
            objArray[0] = value;
            setMethod.Invoke(instance, objArray);
        }

//屬性必須和Filp下的對應的屬性一致
        public static void UpdateFlipTile(string title, string backTitle, string backContent, string wideBackContent, int count, Uri tileId, Uri smallBackgroundImage, Uri backgroundImage, Uri backBackgroundImage, Uri wideBackgroundImage, Uri wideBackBackgroundImage)
        {
            if (CheckOSVersion.IsTargetedVersion)
            {
                Type type = Type.GetType("Microsoft.Phone.Shell.FlipTileData, Microsoft.Phone");
                Type type1 = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");
                foreach (ShellTile activeTile in ShellTile.ActiveTiles)
                {
                    if (activeTile.NavigationUri.ToString() != tileId.ToString())
                    {
                        continue;
                    }
                    object obj = type.GetConstructor(new Type[0]).Invoke(null);
                    CheckOSVersion.SetProperty(obj, "Title", title);
                    CheckOSVersion.SetProperty(obj, "Count", count);
                    CheckOSVersion.SetProperty(obj, "BackTitle", backTitle);
                    CheckOSVersion.SetProperty(obj, "BackContent", backContent);
                    CheckOSVersion.SetProperty(obj, "SmallBackgroundImage", smallBackgroundImage);
                    CheckOSVersion.SetProperty(obj, "BackgroundImage", backgroundImage);
                    CheckOSVersion.SetProperty(obj, "BackBackgroundImage", backBackgroundImage);
                    CheckOSVersion.SetProperty(obj, "WideBackgroundImage", wideBackgroundImage);
                    CheckOSVersion.SetProperty(obj, "WideBackBackgroundImage", wideBackBackgroundImage);
                    CheckOSVersion.SetProperty(obj, "WideBackContent", wideBackContent);
                    object[] objArray = new object[1];
                    objArray[0] = obj;
                    type1.GetMethod("Update").Invoke(activeTile, objArray);
                    break;
                }
            }
        }

 3:開始在進入應用程序的時候初始化一下吧 :)

ShellTile shellTile = ShellTile.ActiveTiles.First<ShellTile>();
            if (shellTile != null)
            {

      //判斷是否是wp7.8系統(tǒng)
                if (CheckOSVersion.IsTargetedVersion)
                {
                    CheckOSVersion.UpdateFlipTile("愛壁紙HD", "愛壁紙HD", "", "", 0, new Uri("/", UriKind.Relative), new Uri("Background.png", UriKind.RelativeOrAbsolute), new Uri("http://s.qdcdn.com/cl/10920808,256,256.jpg", UriKind.RelativeOrAbsolute), null, new Uri("bigtile.png", UriKind.RelativeOrAbsolute), null);
                }
                return;
            }
            else
            {
                return;
            }

 //PS :wp7.8下要想支持大磁貼的話還有一個要求就是這段代碼必須得經(jīng)過初始化,也就是如果 你第二次進入軟件的時候你的應用才會支持

附上源碼:http://pan.baidu.com/share/link?shareid=476410&uk=85241834

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)