当前位置:  编程技术>移动开发
本页文章导读:
    ▪为啥苹果要出7寸的iPad mini        为什么苹果要出7寸的iPad mini? 7 寸平板市场硝烟弥漫,为了打破目前包括 Kindle fire 和 Nexus 7 在内的 Andriod 天下的 7 寸平板市场,苹果祭起了即将推出 iPad mini 这个终极杀器。那么为什么要说.........
    ▪ LWUIT引路蜂map开发示例:概述        LWUIT引路蜂地图开发示例:概述LWUIT是Sun (现在是Oracle)推出的基于Java ME平台的一个UI开发包,类似于Swing的MVC构架,支持多种Layout,Theme,动画,3D过渡效果。个人认为是目前在Java ME上最好.........
    ▪ 【物联网智能网关-04】WinForm for .NET MF 效能一览       【物联网智能网关-04】WinForm for .NET MF 功能一览   .Net Micro Framework界面开发官方标准功能仅支持WPF方式,并且所谓的WPF开发和Windows平台上的WPF有很大的区别,即不支持可视化界面设计,也不.........

[1]为啥苹果要出7寸的iPad mini
    来源: 互联网  发布时间: 2014-02-18
为什么苹果要出7寸的iPad mini?

7 寸平板市场硝烟弥漫,为了打破目前包括 Kindle fire 和 Nexus 7 在内的 Andriod 天下的 7 寸平板市场,苹果祭起了即将推出 iPad mini 这个终极杀器。那么为什么要说苹果很可能会出 7 寸的 iPad mini 呢?

  在此之前,7 寸对平板来说是一个比较尴尬的尺寸,但随着不管是主动还是被动的亚马逊的 Kindle fire 以及其他厂商的探索,7 寸平板的市场并没有成为一片荒漠,相反是一片荒原。这片荒原在过去两年里已经被初步开采,看到市场还是有一定前景的 Google 前几天也发布了 Nexus 7 来逐鹿这片市场。当然,感兴趣不只是 Google,另一只平板电脑巨擘苹果也已经盯上了这片市场。

  今年 4 月份一直比较靠谱的 John Gruber 就曾透露,在苹果公司的库比蒂诺总部实验室中,正在测试一款 7.85 英寸触控屏的 iPad 样机,并且很有可能将在10月份第三季发布。而近日更多的来自上下游供应链的厂商的消息也似乎在逐渐一点点揭去苹果 iPad mini(暂代名)的面纱,7.85 英寸、7.2 毫米厚、A5X 处理器、非 Retina OLED 显示屏。当然以上都是一贯的“消息称”苹果新闻,在苹果最终发布前都是一个谜。但考虑到之前 New iPad、下一代 Retina MBP 都在之前得到媒体的印证,这个 iPad mini 的真实性也是颇高。话说回来,那么苹果为什么可能会出一个 7 寸的 iPad mini 呢?

  1. 挤压竞争对手市场空间

  不给竞争对手留下一点市场空间是苹果一贯的风格。

  让我们先回到六年前,2006 年苹果发布了第一款 iPod Shuffle,在之前乔布斯曾信誓旦旦的说不会推低端的闪存版的音乐播放器,但是随后看看他在 Shuffle 发布会上说了什么,做了什么。2004 年 iPod (硬盘版)的市场份额为 31%,闪存类 MP3 市场份额为 62%。一年后,iPod 的市场份额增长到了 65%,闪存 MP3 的市场份额被压缩到了 29%。但是还不够,因为相对优质但价格也较高的 iPod 一些消费者还是会选择更加低廉的闪存 MP3。因此随后苹果发布了同样为闪存存储的 MP3 播放器 iPod Shuffle 来和闪存 MP3 播放器进行切身肉搏战,甚至随后又发布了 iPod nano 来彻底终结其他音乐播放器市场。最终结果你也看到了,现在你在美国几乎已经看不到除了 iPod 之外的音乐播放器了。

  同样的,iPad 在 10 寸左右的平板市场已经找不到可以睥睨的对手了,竞争者只能去选择更小的 7 寸平板来避开 iPad 的锋芒,因此我们看到了亚马逊的 Kindle Fire、谷歌的 Nexus 7、三星的 Tab P1000、HTC 的 Flyer、华硕 的 Eee Pad 、华为的 MediaPad 以及国内外各种中小型厂商、山寨厂商的 7 寸平板电脑。

  7 寸的平板市场虽然之前有点尴尬,但现在包括谷歌、亚马逊等很多主要对手都有部署,并且份额不少。7 寸平板俨然已经成了下一个争夺的重要战场。而苹果在这个时候发布一款 7 寸平板不仅可以防止对手在那个市场领域闹起革命,断绝有可能掀翻自己的可能,还可以顺势打击对手,蚕食对手市场,进行卡位,让对手难受。而且凭借苹果的产品,在 7 寸市场会占据绝对领先的地位也是有着很大的可能。

  市场竞争格局的改变必然需要重新调整公司思路,并不是因为之前乔布斯说过不做什么就真的不会做什么,事实是商业永远是追求利益的,就算乔布斯在也是一样,只要苹果是一家公司,就永远是由市场驱动的。目前除了 iPhone 没有 mini 外,iPod 有 mini,Mac 也有 mini,相信苹果推出 iPad mini 也算是很正常的一件事情。

  2. 价格考虑

  在移动终端领域,4.3英寸,7 英寸和 9.7 英寸是几个关键的节点,只所以说这几个节点关键是因为这几个点能让成本最优。在这几个节点是最优的玻璃切割利用率,每块玻璃能切割出最大的数量,这样可以控制屏幕最低成本,此外 7 英寸在成本上的优势让产品各个硬件的整合更加容易。但 iPad mini 很可能选择的是 7.85 寸,之所以没有像其他厂商那样选择 7 寸市因为 7.85 寸比起 7 寸来同样可以让成本更优,因此可以在保证价格下潜的同时又不失用户体验。因为 7 英寸与 7.85 英寸虽然差别不大,但是前者的大小只有目前 iPad 的 45%,而后者的大小则相当于目前 iPad 的 66% 。

  3. 便携/定位考虑

  iPad 目前 9.7 寸很大程度上替代的是娱乐和部分办公(收发邮件、查看资讯等)功能,其定位更适合于室内等固定场合的小范围内使用。而 7 寸的平板更加轻薄、手持和携带的特性使其更适合用移动和长时间阅读及影音。因此 iPad mini 可以在一定程度上填补部分定位市场的空缺。

  4. 适配考虑

  苹果所有的产品的尺寸和分辨率都是经过考虑开发者适配后才做出决定的,包括搭配 Retina 在内的产品。同样,如果苹果推出 iPad mini,相信会更倾向于选择 7.85 寸。因此在该尺寸,可以在维持 iPad2 分辨率的情况下达到 132ppi 与第一代 iPad 屏幕的 ppi 相同,这样 iPad mini 便可以直接使用所有过去开发的应用程序,开发者完全不会受影响。而对于用户,缩小后的 iPad mini 界面仍不会低于 44x44 像素,而这个数值是触摸屏幕的一个互动元素最小舒适尺寸,即意味着对于用户的显示与互动操作不会有任何缺失。另外,即使需要适配,苹果最新 iOS6 系统的 SDK 中增加了自动布局功能,它可以帮助开发者针对不同类型的屏幕轻松调整他们的应用程序。

  5. 生态圈考虑

  放眼目前 7 寸平板市场,除了一个已经宣布死亡的 RIM PlayBook 外几乎全部都是 Google 的 Andriod 系统,这对 iOS 生态圈的发展是不能容忍的。

  在搭载 Retian 屏幕的 New iPad 上市后,iPad 2 迅速降价,降价后 iPad 2 虽然已经对当前的 7 寸平板市场产生了威胁,从某种程度上是一种震慑,但仅仅是外围上的震慑还是远远不够的,就如同现代战争一样,仅仅依靠强大的空军的轰炸是无法完成攻占一个国家的,最终的胜利必须由陆军来进行。(相信玩过《文明》这款游戏的人更深有体会)在 7 寸平板这个硝烟已经弥漫的战场上亦是如此,仅仅依靠低价的 iPad 2 和高质量的 New iPad 是无法对这个市场产生威胁的,只有实打实的同样发布一款 7 寸的 iPad mini 真正进入到这个市场中去。

  现在的苹果如同当年发布 iPod Shuffle 一样,仅仅依靠优质的硬盘 iPod 是无法吃掉廉价的闪存 MP3 播放器市场的,只有用同样低价同样是闪存 MP3 播放器的 Shuffle 才能完成占领这个市场的目标。

  因此无论是从系统生态圈上来看,还是从战略层上看,7 寸平板市场不能没有 iOS ,不能放任 Google 的 Andriod ,尤其是 4.0/4.1 体验已经做得相当好的廉价平板在这个市场上如同野草一样的疯长,iPad mini 的进入是一种威慑,从目前来看也只有 iPad mini 能震慑这个市场,还可以在满足喜欢小平板的人群进一步扩大 iOS 用户基数,布局 iOS 生态圈。


    
[2] LWUIT引路蜂map开发示例:概述
    来源: 互联网  发布时间: 2014-02-18
LWUIT引路蜂地图开发示例:概述

LWUIT是Sun (现在是Oracle)推出的基于Java ME平台的一个UI开发包,类似于Swing的MVC构架,支持多种Layout,Theme,动画,3D过渡效果。个人认为是目前在Java ME上最好的UI工具包,而且是免费的。
引路蜂Java ME地图开发包,加上Gis.Drawing在LWUIT上的实现,可以开发出基于LWUIT的地图应用,支持多种地图类型,多图层管理,地理编码服务,地图位置匹配,查询路径以及电子导航等。
在Java ME平台上也可以直接使用javax.microedition.lcdui 开发MIDlet,Java ME引路蜂地图开发示例:第一个地图应用。由于LWUIT本身的特性:类似于Swing的MVC构架,支持多种Layout,Theme,动画,3D过渡效果,LWUIT已成为开发Java ME应用UI事实上的一个标准。

下面是采用LWUIT加上Windows Mobile风格的一个例子,可以开发出和Windows Mobile非常相像的地图应用。

这是一个LWUIT应用,不是Windows Mobile应用!!!

和Java ME一样,后面将逐个介绍引路蜂开发包开发LWUIT应用。你可以发现使用引路蜂开发包开发MIDP应用和LWUIT应用非常类似。

LWUIT 引路蜂地图开发包Ver2.1下载

 

引路蜂地图应用GNavigator完整源码

GNavigator是 曾经发布在Nokia Ovi Store的Java ME应用,基本使用到了引路蜂地图API的所有功能,尽管这是一个基于LWUIT的应用,使用Java语言开发,其它平台也可以参考这个应用的代码。

总代码量大约为24000行,其中纯代码为12000行。

几个用户界面如下:

包括导航演示(可以连接GPS)

代码下载 ,用户手册 ,为Netbean 项目

 


    
[3] 【物联网智能网关-04】WinForm for .NET MF 效能一览
    来源: 互联网  发布时间: 2014-02-18
【物联网智能网关-04】WinForm for .NET MF 功能一览

   .Net Micro Framework界面开发官方标准功能仅支持WPF方式,并且所谓的WPF开发和Windows平台上的WPF有很大的区别,即不支持可视化界面设计,也不支持XML方式界面格式定义,另外提供的控件也很少,又不含事件处理,所以使用上相对繁琐,需要自己写很多额外代码。

于是我在2009年底,自行开发了System.Windows.Froms库,相关内容可以参见我当时所写的博客文章《开源System.Windows.Forms库,让.Net Micro Framework界面开发和上位机一样简单》。2010年5月份所写的那篇《RFID技术在.Net Micro Framework中的应用》博文中所显示的演示界面,就是用System.Windows.Froms库开发的。

后来基于Cortex-M3(STM32F103)内核移植了.NET Micro Framework系统,由于STM32F103的芯片主频较低(72M),运行WPF和System.Windows.Froms库比较吃力(而以前的.NET MF板子大部分都是原来WINCE的开发板,主频和资源比较丰富,所以无论运行WPF还是System.Windows.Froms库都是蛮流畅的)。所以system.Windows.Froms库开发完毕后,做了几个Demo后,基本上就搁置了。另外又重新花时间开发了轻量级的界面开发库TinyGUI(相关博文请参见《【玩转.Net MF–06】为Cortex-M3打造轻量级TinyGUI》)。

M3系统升级到STM32F207后,主频提升为120M,运行WPF和System.Windows.Froms库基本上问题不大了,所以对原先的System.Windows.Froms库又进行了升级改进。

以前的System.Windows.Froms库主要模仿WINCE界面开发的,需要用触摸笔才能操作,目前这种操作方式早就淘汰了,所以为了支持手指直接操作,主要从以下几个方面入手进行了改造。

(1)、重新编写了软键盘,支持手指单击输入;

(2)、默认字体由原来的12变为16,为了便于操控,控件也进行了扩大处理;

(3)、去掉了任务栏;

(4)、去掉任务菜单;

(5)、窗体界面大小覆盖全屏;

控件简介

System.Windows.Form目前包括Button、TextBox、ListBox、ComboBox、CheckBox、GroupBox、RadioButton、PictureBox、ProgressBar、VScrollBar、HScrollBar等11种常用控件,此外还提供了MessageBox方法,使用方法和Windows平台的winform保持一致。

包含两类窗体、普通窗体及模式窗体,含义和windows平台相同。

软键盘简介

软键盘一共四个不同界面,通过上面的功能键进行切换。

目前还不支持中文输入。

Graphics类简介

如果用户比较喜欢重载OnPaint用Graphics类进行编程,那么和在windows或wince编程中的体验完全一样。不仅如此Graphics类还扩展了一些函数,比如支持图片透明、渐变、圆角矩形绘制等等方法。

Graphics类的声明如下:

    public sealed class Graphics : Microsoft.SPOT.DispatcherObject, IDisposable

    {

        public bool EmptyClipRect;

 

        publicGraphics(Bitmap bmp);

        publicGraphics(int width, intheight);

 

        public Bitmap Bitmap { get;}

        public Rectangle Clip { get;set; }

        public int Height { get; }

        public int Width { get; }

 

        public void BlendImage(Bitmapsource, int destinationX, int destinationY, intsourceX, int sourceY, intsourceWidth, int sourceHeight, ushort opacity);

        public void Clear(Colorcolor);

        public static SizeComputeTextExtent(string text, Font font);

        public static SizeComputeTextExtent(string text, Font font, intavailableWidth);

        public void Dispose();

        public void DrawEllipse(Penpen, Rectangle rect);

        public void DrawEllipse(Penpen, int x, inty, int width, intheight);

        public void DrawImage(Bitmapimage, int x, inty);

        public void DrawImage(Bitmapimage, int destinationX, int destinationY, intsourceX, int sourceY, intsourceWidth, int sourceHeight);

        public void DrawLine(Penpen, int x0, inty0, ushort Data);

        public void DrawLine(Penpen, int x0, inty0, int x1, inty1);

        public void DrawPolygon(Penpen, Point[] points);

        public void DrawPolygon(Penpen, Point[] points, bool Sealed);

        public void DrawRectangle(Penpen, Rectangle rect);

        public void DrawRectangle(Penpen, int x, inty, int width, intheight);

        public void DrawRoundRect(Penpen, Rectangle rect, int rx, int ry);

        public void DrawRoundRect(Penpen, int x, inty, int width, intheight, int rx, intry);

        public void DrawString(strings, Font font, Brushbrush, Rectangle rect);

        public void DrawString(strings, Font font, Brushbrush, int x, inty);

        public void DrawString(strings, Font font, Brushbrush, Rectangle rect, StringFormat format);

        public void FillEllipse(Brushbrush, Rectangle rect);

        public void FillEllipse(Brushbrush, int x, inty, int width, intheight);

        public void FillPolygon(Brushbrush, Point[] points);

        public void FillRectangle(Brushbrush, Rectangle rect);

        public void FillRectangle(Brushbrush, int x, inty, int width, intheight);

        public void GetTranslation(outint x, out int y);

        public void ResetClip();

        public void RotateImage(intangle, int destinationX, int destinationY, Bitmapbitmap, int sourceX, intsourceY, int sourceWidth, int sourceHeight, ushortopacity);

        public void Scale9Image(intxDst, int yDst, intwidthDst, int heightDst, Bitmap bitmap, intleftBorder, int topBorder, int rightBorder, intbottomBorder, ushort opacity);

        public void SetPixel(Colorcolor, int x, inty);

        public void StretchImage(intxDst, int yDst, intwidthDst, int heightDst, Bitmap bitmap, intxSrc, int ySrc, intwidthSrc, int heightSrc, ushort opacity);

        public void TileImage(intxDst, int yDst, Bitmapbitmap, int width, intheight, ushort opacity);

        public void Translate(intdx, int dy);

    }

界面设计简介

由于.Net Micro Framework的IDE开发环境并不支持所见即所得的窗体设计功能,所以我们可以用.Net Framework和.Net Compact Framework开发环境设计窗体,然后把相关窗体文件(如Form1.cs和Form1.designer.cs文件)直接导入到.Net Micro Framework工程中,稍加删减即可为.Net Micro Framework所用。

   

(window 控件的字体可以设置为:字体"Arial"  大小11.25F,这种字体和底层设备的字体大小比较接近 )

关于字体库

由于字体文件相对较大,所以YFSoft.Font库文件是全开源的,用户可以根据需要自行定义字体,设置好进行编译,替换系统所提供的YFSoft.Font.*文件即可。

public Font(string name, float emSize, FontStylestyle)

        {

            switch(this._name)

            {

                default:

                case"Arial":

                    switch(style)

                    {

                        //case FontStyle.Bold:

                        //_value = YFResource.GetFont(YFResource.FontResources.YFArial16B);

                        //break;

                        default:

                        case FontStyle.Regular:

                            _value = YFResource.GetFont(YFResource.FontResources.YFArial16);

                            break;

                    }

                    break;              

            }

            this._size  = emSize;

            this._left">        }

根据需要上述代码进行必要的调整,理论上可以支持任意字体了。

关于.NET MF字体如何定制,请参见我以前写的博文《.NetMicro Framework研究—中文显示》和《.NetMicro Framework研究—Tinyfnt字体研究》。

字体工具下载:http://www.sky-walker.com.cn/MFRelease/Tools/YFTFConvert.rar

未来发展规划

(1)、采用组态软件进行界面设计,并自动生成界面相关的代码。

(2)、再扩展几个工业用控件,比如动态曲线,表格,仪表盘显示等等。

演示视频

视频播放地址:http://v.youku.com/v_show/id_XNDI2NzM4Mjk2.html

从演示效果上看,添加比较多的控件,性能还不尽人意。不过这是基于STM32F207(主频120M)测试的,后续采用STM32F407(主频168M)的芯片,性能会有比较大的改善(当然本框架从软件角度还会继续进行性能优化),想以前在STM32F103(主频72M)芯片上,这个框架根本跑步起来。期待ST推出性能更强大的Cortex-M3或Cortex-M4芯片。

当然如果你需要在当前平台,界面跑得更快,那只有先选择TinyGUI了,不过在写代码上,您自己得多下点功夫了。

 

下载地址:http://www.sky-walker.com.cn/MFRelease/library/V42/YFSoft.WinForm.rar

MF简介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF资料:http://www.sky-walker.com.cn/News.asp?Id=25



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3