Fyter的博客

技术资讯 源码共享

极端分析手机操作系统优劣WP7、Android、iOS

我将尽量使用我专业的知识,极端的、理智的为大家分析主流的3大手机操作系统的优劣。

image

背景:

iOS,制造商:苹果——做硬件的(希望你不要提出“苹果有操作系统”的质疑,那个系统很烂,或少数人喜欢型的东西)

Android,制造商:谷歌+各大手机硬件商——做网络+做硬件的联合,还有个无所谓的摩托罗拉

WP7(Windows Phone 7),制造商:微软+各大手机硬件商+诺基亚——做软件的+做硬件的联合

 

现在分门别类评价:

外观工艺:
目前苹果的外观工艺无人能敌,包括诺基亚,毕竟人家是做硬件的。每一个开关的选材都是优质的漂亮的,舍得用料带来的质感也非常棒。为什么先提外观,因为中国很多人买iPhone都是为了外观,在他们眼里,软件是啥都不知道。
Android及WP7的手机硬件不掌握在系统厂商那里,所以暂时苹果胜,因为目前出的手机中没有一款可以和iPhone4的外观工艺相抗衡。
Google收购了Moto,形势可能有所改观,或者因为有了亲儿子,所有干儿子都倒向WP7。或者Moto也许出一款超越iOS设计的产品,虽然可能性不大。
苹果胜。

硬件统一性:
这一项也意味着软件兼容性,最简单的理解就是你的机器可不可以玩这个平台的所有软件产品。
Android在这方面做的最差的,没有严格要求。今天我出个没有多点触控的修改系统,明天他出一个没有陀螺仪的系统,造成了各种体验差异。
iOS是自家独占系统自然不必多说,好与不好自己可以控制,是非常简单的事情。
WP7这方面做的很好,有严格的硬件限制,促使各硬件厂商出品的手机有一个底线可以使用所有WP7的软件。
这一轮有两家胜利,iOS及WP7。

界面:
布局及图标形势:iOS、Android使用传统的小图标方式,WP7使用最新与未来Windows 8相同的MetroUI。这方面将不作为比较条件,因为各有所好。我从个人的感觉来说MetroUI很大气,比较商务,小图标的传统UI有点拿不出手。特别是WP7点击某个应用是界面的3D飞跃感觉很棒,2D界面是无法比的。
WP7是全球首款唯一的3D移动设备操作系统,有利于硬件加速,耐看,动感,炫丽,流畅。
iOS使用CPU做的2D界面,流畅,动感。
Android使用2D界面,有些硬件厂商自己的版本会带有部分3D效果,作为一个专业人员,我实在没有夸奖他的词,目前看到的任何一款Android手机界面没有不跳帧的。群众都能接受这样的界面,难得,呵呵。
iOS取巧在分页提高效率,Android怎么搞都是卡。
对于开发游戏的人明白一个道理,2D游戏受显卡像素填充率和CPU的限制很难提高物件数量。3D游戏有显卡提供硬件支持,可以得到强大的对象级渲染及多通道渲染管线甚至多显卡进行加速,操作系统的UI实现同样有这个优势。可以看看nVidia的CPU与GPU趣味对比视频。这也是WP7同意硬件要求里为什么显卡也必须提供视频加速的原因。
无需犹豫,WP7胜。

开发者便利:
可能你会想这个和普通用户没有太大关系,但开发环境的易用性、开发效率,决定了应用的数量、质量等。
iOS系统使用Mac的xcode开发环境,主要使用Objective-C\C\C++语言,Objective-C这个语言语法很耐人寻味,可读性、可维护性比较低,从其他语言转到这个语言,如果没有对苹果的狂热,是很抵制的。IDE(集成开发环境)做的比较完善,版本更新的话比较二,没有Windows Update那么好用,你需要下一整套新的。帮助文件比较全,有在线与非在线版本。
Android系统可以使用Eclipse/C++/Java进行开发,在Linux下进行开发的朋友一定知道这个东西,给他一个评价吧,没有什么更好用的东西了,只能用这个凑合着。帮助文件你可以Google了。
WP7系统使用Visual Studio 2010 Express For Windows Phone 7,名字比较长,易用性很高,功能完善(做开发的人都知道Visual Studio(VS)这应该是全球最好的开发工具了)。使用C#/VB.net作为开发语言,Silverlight/XNA作为应用程序的基础支持,都是简单易学强大的框架。文档更是著名的MSDN,做Windows 开发只需要这么一个东西就OK。而且微软提供了面向iOS、Android、塞班向WP7移植应用的解决方案。
目前来说做开发开发方面WP7是无人能敌的,所以WP7胜。

游戏:
iOS游戏众多,开发者热情比较高。
Android游戏众多,但收费模式问题,可能阻碍开发者的持续开发。
WP7游戏比较少,有XBox Live撑腰专业性强,独占游戏质量高。
游戏的效果不取决于系统,所以是平分的。像iOS上的所谓的高品质游戏《无尽的剑》、《9mm》,经过分析,均可以在现有WP7设备商实现,Android的同等硬件也都可以实现,只是看游戏厂商是否给力了。
比比游戏的数量及质量。
iOS胜。

细节:(我会陆续补充)
WP7锁屏前的黑暗,系统在提示你,我要锁屏了,你是否要做点什么。

微软开发人员提供的Silverlight对话框类

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Shapes;

namespace DialogApp
{    
    public abstract class Dialog
    {
        public void Show(DialogStyle style)
        {
            if (_isShowing)
                throw new InvalidOperationException();
            _isShowing = true;
            EnsurePopup(style);
            _popup.IsOpen = true;
            Application.Current.Host.Content.Resized += OnPluginSizeChanged;
        }
       
        public void Close()
        {
            _isShowing = false;
            if (_popup != null)
            {
                _popup.IsOpen = false;
                Application.Current.Host.Content.Resized -= OnPluginSizeChanged;
            }
        }
       
        // Override this method to add your content to the dialog
        protected abstract FrameworkElement GetContent();
       
        // Override this method if you want to do something (e.g. call Close) when you click
        // outside of the content
       
        protected virtual void OnClickOutside() { }
       
        // A Grid is the child of the Popup. If it is modal, it will contain a Canvas, which
        // will be sized to fill the plugin and prevent mouse interaction with the elements
        // outside of the popup. (Keyboard interaction is still possible, but hopefully when
        // Silverlight 2 RTMs, you can disable the root to take care of that.) The Grid isn't
        // strictly needed if there is always a Canvas, but it is handy for centering the content.
        //
        // The other child of the Grid is the content of the popup. This is obtained from the
        // GetContent method.
        private void EnsurePopup(DialogStyle style)
        {
            if (_popup != null)
                return;
           
            _popup = new Popup();
            _grid = new Grid();
            _popup.Child = _grid;
            if (style != DialogStyle.NonModal)
            {
                // If Canvas.Background != null, you cannot click through it
                _canvas = new Canvas();
                _canvas.MouseLeftButtonDown += (sender, args) => { OnClickOutside(); };
               
                if (style == DialogStyle.Modal)
                {
                    _canvas.Background = new SolidColorBrush(Colors.Transparent);
                }
                else if (style == DialogStyle.ModalDimmed)
                {
                    _canvas.Background = new SolidColorBrush(Color.FromArgb(0x20, 0x80, 0x80, 0x80));
                }
               
                _grid.Children.Add(_canvas);
            }
            _grid.Children.Add(_content = GetContent());
            UpdateSize();
        }
       
        private void OnPluginSizeChanged(object sender, EventArgs e)
        {
            UpdateSize();
        }
       
        private void UpdateSize()
        {
            _grid.Width = Application.Current.Host.Content.ActualWidth;
            _grid.Height = Application.Current.Host.Content.ActualHeight;
            if (_canvas != null)
            {
                _canvas.Width = _grid.Width;
                _canvas.Height = _grid.Height;
            }
        }
       
        private bool _isShowing;
        private Popup _popup;
        private Grid _grid;
        private Canvas _canvas;
        private FrameworkElement _content;
    }
   
    public enum DialogStyle
    {
        NonModal,
        Modal,
        ModalDimmed
    };
}

Windows Phone 7平台XNA框架简介

 

2011年08月31日00:05 来源:机械工业出版社 作者:倪浩 李鹏 苏世耀 编辑:景保玉

IT168技术】本章介绍Windows Phone 7平台下的XNA开发技术,包括XNA的概述、类库等理论知识,最后通过一个例子介绍XNA的游戏架构以及生命周期。游戏开发是智能手机的一个重要领域,XNA是Windows Phone 7平台上游戏开发的主要工具,限于篇幅,本章只是对XNA做一个大致介绍。通过阅读本章,读者可以对XNA的框架有初步的理解,也为以后深入学习XNA做准备。

image

学习重点:

了解Windows Phone 7下XNA的概念。

了解Windows Phone 7下XNA的类库功能。

了解Windows Phone 7下XNA开发的游戏程序结构。

一、 XNA简介

XNA作为Windows Phone 7全新的开发平台提供了优异的图形及游戏性能,也为Windows Phone 7手机增添了强劲的活力。

1、XNA概述

XNA是微软公司推出的所谓“通用软件开发平台”,是基于DirectX的游戏开发平台,是微软公司对于Managed DirectX的修正及扩充版本。它的目标是帮助开发者更加方便快捷地创建优秀、快速和跨平台的游戏。XNA中,X代表能够在DirectX和Xbox之间达到跨平台的强大的软件工具;N代表下一代(Next Generation);A代表架构(Architecture)。以DirectX为原型,微软公司希望把XNA发展为所有游戏开发平台的通用标准。如此一来将实现游戏开发工具的无缝嵌入和平滑过渡。

2、XNA发展过程

XNA的发展过程如下:

1)2004年5月12日,微软公司在第十届全球电子企业展销会上提出了XNA技术。

2)2005年3月17日,微软公司在GDC(游戏开发者讨论会)上,正式发布针对新一代游戏开发的跨平台整合型游戏开发套件“XNA Studio”。

3)2006年3月20日,微软公司在GDC上发布了XNA Framework游戏开发技术。XNA Framework构建于.NET Framework上,添加了主要用于游戏应用开发所需的类别库,在指定的平台上使游戏代码的重复利用率达到最大,降低跨平台游戏开发的难度,让游戏开发者可轻松地以C# 语言进行跨PC和Xbox 360平台的游戏开发。该技术整合在跨平台开发套件“XNA Studio”中。

4)2006年8月30日,微软公司发布为业余游戏制作者所设计的游戏开发套件XNA Game Studio Express Beta1,同年11月1日,又发布了XNA Game Studio Express Beta2。

5)2007年4月24日,微软公司发布XNA Game Studio Pro版本。

6)2007年12月13日,微软公司发布XNA Game Studio 2.0版本,该版本的特点是可以在Visual Studio 2005的各个版本中使用XNA开发项目。

7)2008年10月30日,XNA Game Studio 3.0正式版发布,支持C# 3.0、LINQ和各个版本的Visual Studio 2008。

8)2009年6月11日,微软公司发布XNA Game Studio 3.1版本,新版本提供Video Playback、Revised Audio API。

9)2010年3月9日,微软公司在GDC上发布了XNA Game Sudio 4.0版本,该版本支持在Windows Phone 7平台上开发XNA游戏。

3、XNA特点

相对于微软公司以前的手机操作系统来说,在游戏开发技术上,Windows Phone 7采用XNA技术是一个很大的突破点。归纳起来XNA游戏开发有以下特点:

① 加快游戏开发的速度。以前使用DirectX来开发Windows平台游戏,游戏开发公司大概花费80%的时间在程序开发上,而在游戏的创意上仅占20%。而使用XNA.NET Framework进行游戏开发,大大减少了开发者的工作量,不仅降低了开发的成本,而且在游戏开发上可以更加关注游戏的创意。

② 开发的游戏可以在Windows与Xbox 360之间跨平台运行,同时它更加易用,有更高的扩展性。XNA Framework把所有用作游戏编程的底层技术封装起来,由此,游戏开发员就可以把精力大部分专注于游戏内容和构思开发,而不用关心游戏移植至不同平台上的问题,只要游戏开发于XNA的平台上,支持XNA的所有硬件都能运行。

③ 支持2D与3D游戏开发。XNA Framework同时支持2D和3D的游戏开发,也支持XBox 360的控制器和震动效果。

4、XNA游戏模型

XNA Framework包括以下3个核心部分(如图4-1所示)。

image
▲图4-1 XNA架构组成

在Microsoft.XNA.Framework Pipelinet.dll中的XNA Graphic Engine(图形引擎)。

在the Microsoft.XNA.Framework Pipelinet.dll中的XNA Game Application Model(应用程序模型)。

在Microsoft.XNA.Framework Pipelinet.dll中的XNA Content Pipeline(内容管道)。