偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

初探AIR for Android開發(fā)

移動(dòng)開發(fā) Android
Adobe發(fā)布mobile AIR已經(jīng)有一段時(shí)間了,本文就將以MP3電臺(tái)為例,介紹使用Flex Hero 開發(fā)mobile AIR應(yīng)用程序的一些方法和心得。

Adobe發(fā)布mobile AIR已經(jīng)有一段時(shí)間了,但是移動(dòng)設(shè)備的UI與控件與PC端截然不同,導(dǎo)致真正使用AIR技術(shù)開發(fā)的移動(dòng)設(shè)備程序少之又少,而前段時(shí)間,Adobe終于發(fā)布了包括移動(dòng)UI組件的Flex SDK “Hero” (就是以前的Slider),雖然只支持Android系統(tǒng),但是我們可以看到電子市場(chǎng)上使用AIR技術(shù)開發(fā)的程序越來越多。本文就將以MP3電臺(tái)為例,介紹使用Flex Hero 開發(fā)mobile AIR應(yīng)用程序的一些方法和心得。

介紹移動(dòng)應(yīng)用程序

移動(dòng)程序界面中有一個(gè)重要的概念:屏幕,如下圖

屏幕示意

在MP3電臺(tái)這個(gè)程序中,選臺(tái)界面和播放界面就是兩個(gè)“屏幕”,在PC端,這些操作是可以在一起進(jìn)行的,可是由于移動(dòng)設(shè)備屏幕大小的原因,無(wú)法塞在一個(gè)界面里。所以我們?cè)谶x完臺(tái)之后,整個(gè)屏幕都將轉(zhuǎn)換為電臺(tái)播放界面。Flex Hero中的View

在Flex “Hero”里,“屏幕”的概念叫做View。hero中關(guān)于移動(dòng)平臺(tái)的核心類如下:

類示意圖

其中,MobileApplication相當(dāng)于桌面版本的Application,是整個(gè)程序的容器。ViewNavigator管理各個(gè)View的顯示與切換,也包含頂部控制欄ActionBar。

ViewNavigator解析

ViewNavigator處理視圖切換的方法:

  1. navigator.pushView(view,data,transition=null);  
  2. navigator.popView(transition=null); 

ViewNavigator.pushView方法用于轉(zhuǎn)換到新的視圖,例如,當(dāng)用戶在頻道列表頁(yè)面選擇了一個(gè)頻道時(shí),我們可以執(zhí)行

  1. navigator.pushView(RadioPlay,{channel_item:channelList.selectedItem}); 

這樣的話,就切換到了RadioPlay這個(gè)視圖。這時(shí),如果用戶按下了android上的后退按鈕,則Flex框架會(huì)自動(dòng)執(zhí)行navigator.popView操作,這樣會(huì)回到上一個(gè)視圖。當(dāng)然,我們也可以捕獲這個(gè)鍵盤事件,然后執(zhí)行自定義代碼。數(shù)據(jù)驅(qū)動(dòng)的視圖

  1. this.addEventListener(KeyboardEvent.KEY_UP,function(e:KeyboardEvent){ 
  2.     if(e.keyCode == Keyboard.BACK){ 
  3.         e.stopPropagation(); 
  4.         //其他操作,例如存儲(chǔ)數(shù)據(jù)等 
  5.         //其他操作完畢 
  6.         navigator.popView(); 
  7.     }  
  8.  }); 

視圖切換時(shí),F(xiàn)lex默認(rèn)會(huì)把上一個(gè)視圖的UI銷毀(可以通過設(shè)置destructionPolicy=”none”來避免銷毀),這樣一來,我們回退到上一個(gè)視圖的時(shí)候,就會(huì)丟失之前的UI狀態(tài),比如說頻道列表的選中狀態(tài)View包含一個(gè)屬性data,當(dāng)開發(fā)者使用pushView方法時(shí)的第二個(gè)參數(shù)data將被賦值到這個(gè)屬性中。而每次用戶按下機(jī)身上的返回按鈕,F(xiàn)lex框架執(zhí)行popView方法自動(dòng)恢復(fù)歷史記錄時(shí),也會(huì)把上一次的data屬性重新放到View的構(gòu)造方法中??梢钥闯?,如果我們需要在界面切換時(shí)保存當(dāng)前視圖的所有狀態(tài),相關(guān)代碼如下:

  1. this.addEventListener(FlexEvent.VIEW_DEACTIVATE,saveState); 
  2. private function saveState(event:Event):void{ 
  3.     this.data.selection = channelList.selectedIndex; 
  4.     this.data.scrollPosition = channelList.dataGroup.verticalScrollPosition; 

這樣,我們?cè)陔x開頻道列表頁(yè)的時(shí)候,就會(huì)把當(dāng)前列表的選中狀態(tài)記錄下來,在重新顯示這個(gè)View的時(shí)候,我們可以再恢復(fù)回來:

  1. private function restoreState():void{ 
  2.     if(!data){ 
  3.         data = new Object(); 
  4.     } 
  5.     if(data.selection){ 
  6.         channelList.selectedIndex = data.selection; 
  7.     } 
  8.     if(data.scrollPosition){ 
  9.         channelList.dataGroup.verticalScrollPosition = this.data.scrollPosition; 
  10.     } 

優(yōu)化技巧與注意事項(xiàng)

Android上的AIR不會(huì)自動(dòng)退出,也就是說,當(dāng)用戶按下home鍵或者后退到主屏幕時(shí),AIR程序依然在運(yùn)行。對(duì)于電臺(tái)這樣一個(gè)應(yīng)用,后臺(tái)運(yùn)行是合乎情理的,但是如果想像傳統(tǒng)程序一樣,后退即退出的話,則需要額外做一些工作了:

  1. if(Capabilities.cpuArchitecture=="ARM"){ 
  2.     NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);  
  3.   
  4. private function handleDeactivate(event:Event):void{ 
  5.     NativeApplication.nativeApplication.exit(); 

AIR在一些設(shè)備上的動(dòng)畫運(yùn)行效率比較低,我們可以給運(yùn)動(dòng)的元件設(shè)置cacheAsBitmapMatrix=true,將此元件交給GPU硬件渲染。這個(gè)屬性和桌面版本的cacheAsBitmap的用法幾乎完全一樣,對(duì)于需要平移、縮放的顯示對(duì)象,設(shè)置這個(gè)屬性可以大大加快動(dòng)畫效率。

責(zé)任編輯:佚名 來源: baiduux
相關(guān)推薦

2013-05-14 09:54:27

Android開發(fā)開源開發(fā)環(huán)境

2012-02-28 13:52:45

Adobe AIRAndroidFlash

2009-10-30 10:45:45

ScalaEclipseAndroid

2013-05-03 15:17:59

Android開發(fā)Android SDK

2013-05-03 15:06:08

AIR移動(dòng)應(yīng)用Android開發(fā)

2013-05-14 11:18:24

AIR AndroidSwipe手勢(shì)

2013-05-14 09:57:37

2013-05-14 10:27:46

Android開發(fā)設(shè)置程序?qū)傩?/a>

2013-05-14 11:16:26

AIR Android旋轉(zhuǎn)手勢(shì)

2013-05-14 10:39:27

AIR Android打包APK文件

2013-05-14 10:37:10

AIR Android設(shè)置訪問權(quán)限

2013-05-14 10:56:45

AIR Android多點(diǎn)觸摸

2010-08-11 10:58:06

AndroidAndroid NDK

2011-11-16 16:21:09

AdobeAIR

2012-07-09 10:22:28

Mono for An

2017-01-15 18:32:39

Openresty架構(gòu)性能

2013-05-14 09:50:44

Android開發(fā)Flash Build

2013-05-14 10:05:10

Android開發(fā)游戲設(shè)計(jì)

2013-05-14 10:10:28

Android開發(fā)棋子類Grid

2013-05-14 11:01:34

AIR AndroidTouchEvent類
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)