返回首页


今天,Flash Builder的卷饼(仍处于测试阶段)让您开发本机应用程序的Andr​​oid设备和黑莓PlayBook。新的LT;:MobileApplicationgt;标签和新的Flex英雄的移动部件,极大地提高你设计一个应用程序的方式。它已经发展多屏幕应用的最有效的框架,它只是一个开始,因为Adobe将加入更多和支持更多的设备。提示#1:杀死你的应用程序
这是Flash开发人员的头号Android应用程序的误解。当您退出应用程序(例如推动Home按钮),应用程序仍然在后台运行。您需要知道此默认行为,并控制它。这是一个非常强大的行为,从Android继承的,但有时它可以杀死智能手机的用户体验。让我举一个例子。在AIR 2.5中引入的地理位置API返回实时坐标。在Android上,它直接利用操作系统的GPS API,大家都知道,消耗了大量资源。在此示例中,我只要求我使用地理定位API的位置,并显示在文本字段中纬度。不要忘了添加的Andr​​oid权限"ACCESS_FINE_LOCATION??XML清单。
{S0} {S2}
在第一个屏幕,你可以看到我的应用程序是为寻找我的位置,作为GPS Android的图标出现在状态栏中。然后我点击主页按钮(屏幕2)。 GPS是在后台工作!!如果我在运行的服务,tip1quitHandler应用程序确实还是完全活着。这是我的资源白白消耗。
要控制应用程序的行为,你一定要听Deactivate事件上的本地应用程序。只需在您的主MXML文件中的代码添加这些行:

<?xml version="1.0" encoding="utf-8"?>

<s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009"

		xmlns:s="library://ns.adobe.com/flex/spark"

		firstView="views.tip1quitHandlerHome"

		creationComplete="mobileapplication1_creationCompleteHandler(event)">

	<fx:Script>



		<![CDATA[<span class="code-keyword"><span class="code-SummaryComment">

			import mx.events.FlexEvent;

 

			protected function mobileapplication1_creationCompleteHandler(

                               event:FlexEvent):void

			{

 

				NativeApplication.nativeApplication.addEventListener(

                                        Event.DEACTIVATE, onDeactivateApp);

			}

 

			protected function onDeactivateApp(event:Event):void

			{

				NativeApplication.nativeApplication.exit();

			}

 

		</span>]]></span>

	</fx:Script>

</s:MobileApplication>

在这种情况下我只是杀的应用程序时,用户可追溯到主屏幕。您还可以选择删除事件侦听器上的地理位置,并再次激活它Event.ACTIVATE是发射时。它给你更多的自由,比以往任何时候都在Android和控制。提示#2:加载数据前推视图
这是由于新MobileApplication架构的另一个经典的错误。当你需要从互联网上下载一些数据,不调用视图中的服务。如果你做,你会推出一个无用的请求每次你回去吧。更新主应用程序文件,打电话给你的服务和推动结果事件的看法。删除在MobileApplication标签firstView参数和creationComplete事件致电您的服务。当您收到resultEvent,推动第一种观点,并通过一个ArrayCollection event.result对象。{C}
退房视频发现我如何使用Flash Builder 4中的数据向导建立一个应用程序在5分钟内连接DEVOXX REST服务。一旦你的数据是加载,它的坚持之间的观点。在我的示例中,我得到的发言者名单,并存储在数组集合。当我想要显示左右扬声器的细节,我只是推了一个新的观点,传递的list.selectedItem对象。 AIR 2.5中,你也可以选择本地存储在SQLite数据库中的数据。提示#3:显示一个自定义标签
使用移动的项目renderes有最佳性能的数据,而滚动列表。不要忘了,你也可以使用labelFunction参数列表,而不是经典的labelField。一个典型的使用情况是,当你想显示列表中的用户的全名。例如,如果你只接收来自服务的名字和姓氏,然后使用这个简单的一招。
<fx:Script>

		<![CDATA[

			public function myFullName(obj:Object):String

			{

				return(obj.lastName + " " + obj.firstName);

			}

 

			protected function list1_clickHandler(event:MouseEvent):void

			{

				// TODO Auto-generated method stub

				navigator.pushView(views.mySpeaker,

                                        list.selectedItem);

			}

 

		]]>

	</fx:Script>

	<s:List id="list" width="100%" height="100%" dataProvider="{data}" 

             labelFunction="myFullName" click="list1_clickHandler(event)">

 

	</s:List>
提示#4:声明一个闪屏
AIR应用程序将始终采取的第二个启动。 Flex的英雄框架调整到目前的Preloader类显示图像之前经典的装载经验。始终在主MobileApplication标签声明一个闪屏(只是一个静态图像),以改善用户体验。它总是更好的形象,而不是一个黑色的背景与用户欢迎。几个"的比例是多少??参数可用来控制显示闪屏。你应该考虑的信箱和缩放比例缩放模式。使用splashScreenImage和MobileApplication splashScreenScaleMode参数。
<s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009"

	xmlns:s="library://ns.adobe.com/flex/spark"

	xmlns:speakersdevoxx="services.speakersdevoxx.*"

	creationComplete="mobileapplication1_creationCompleteHandler(event)" 

         title="Loading..."

	splashScreenImage="@Embed('devoxxSplash.png')" splashScreenScaleMode="zoom">
提示#5:检查屏幕的方向
我一个Flex 4的自定义布局的大风扇。这里你可以阅读我的​​自定义布局的文章:默认情况下,移动List组件将使用VerticalLayout类。根据显示,VerticalLayout不一定是最好的选择。根据设备的方向(纵向或横向),你也可能要改变您的列表相关联的布局。当我显示图片时,我喜欢的TileLayout与"行吗??方向,但是当我切换到风景模式时,我更喜欢与TileLayout"列??方向。这里有两个同时使用两个不同的布局,根据屏幕方向的应用程序的截图。{S3}{S4}的
在左边,你可以欣赏到肖像模式,并在右边的风景模式。要找出当用户旋转屏幕,我听的ResizeEvent上的看法呢??我不知道,它是最好的方式进行??但它的作品{五}
protected function checkOrientation():void{

				if(navigator.landscapeOrientation == true){

					currentState = "landScapeView";

				}else{

					currentState = "portrait";

				}

			}

 

			protected function onResizeView(event:ResizeEvent):void

			{

				checkOrientation();

			}

然后,只需申报您的应用程序的状态,并关联到您的国家的布局:
<s:states>

		<s:State name="portrait"/>

		<s:State name="landScapeView"/>

	</s:states>

	<s:List width="100%"  height="100%" dataProvider="{myData}" 

             itemRenderer="views.mySecondIR">

		<s:layout.portrait>

			<s:TileLayout orientation="rows"/>

		</s:layout.portrait>

		<s:layout.landScapeView>

			<s:TileLayout orientation="columns"/>

		</s:layout.landScapeView>

	</s:List>
提示#6:使用自定义布局
我只是试图用我的{A}我和我的Andr​​oid设备上的良好表现是令人惊讶的惊讶。退房的视频,看到它是如何工作的。
{中六}技巧#7:你的秘诀
现在我需要你的秘诀{七}如果你已经发现了很大的技巧,以改善Flex移动的用户体验,请发表评论或到您的博客文章的链接。| Michaeuml;升Chaize

回答

评论会员: 时间:2