西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发其它知识 → 让你的应用在WP7.8系统下支持大磁贴代码演示

让你的应用在WP7.8系统下支持大磁贴代码演示

相关软件相关文章发表评论 来源:西西整理时间:2013/3/30 9:03:35字体大小:A-A+

作者:西西点击:9次评论:0次标签: 大磁贴

  • 类型:源码相关大小:23.6M语言:中文 评分:9.1
  • 标签:
立即下载

wp7.8 和wp8 Live Tile的区别在于wp7.8的第三方应用仅支持两种大小的Tile 而wp8支持三种 应为wp8开放了三种模板供开发者使用,而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: 创建反射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系统
                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下要想支持大磁贴的话还有一个要求就是这段代码必须得经过初始化,也就是如果 你第二次进入软件的时候你的应用才会支持

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

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据