午夜欧美_国产视频一区二区_91精品国产综合久久久久久丝袜_亚洲精品久久久久久动漫_成人午夜精品一区二区三区_亚洲伦理影院

初探AIR for Android開發(fā)

來源:網(wǎng)絡(luò)

點(diǎn)擊:901

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: AIR,Android開發(fā)

      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è)備屏幕大小的原因,無法塞在一個(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處理視圖切換的方法:

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

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

    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)的視圖

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

        視圖切換時(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)代碼如下:

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

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

    private function restoreState():void{if(!data){data = new Object();}if(data.selection){channelList.selectedIndex = data.selection;}if(data.scrollPosition){channelList.dataGroup.verticalScrollPosition = this.data.scrollPosition;}}

        優(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)程序一樣,后退即退出的話,則需要額外做一些工作了:

    if(Capabilities.cpuArchitecture=="ARM"){NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);}private function handleDeactivate(event:Event):void{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)畫效率。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。

    主站蜘蛛池模板: 日韩成人在线视频 | 九九国产精品视频 | 国产高清在线精品一区二区三区 | 国产在线播放一区 | 日韩精品在线免费观看 | 国产综合社区 | 国产成人久久精品二区三区 | 国产一二三区在线 | 欧美亚洲国产精品 | 欧洲第一页 | 国产精品视频久久久久 | 欧美日韩亚洲色图 | 国产美女视频黄a视频全免费网站 | 亚洲精品123区 | 全免费午夜一级毛片一级毛 | 一级成人毛片 | 国产成人综合久久综合 | 欧美日韩国产一区二区三区在线观看 | 欧美日本免费一区二区三区 | 亚洲综合图片小说区热久久 | 成人精品久久 | 五月婷婷在线视频 | 国产在线观看一区二区三区 | 黄色毛片免费观看 | 亚洲欧美另类日韩 | 国产成人乱码一区二区三区在线 | 性夜影院爽黄a爽免费看网站 | 亚洲精品乱码久久久久久中文字幕 | 久久er99| 国产一区 在线播放 | 亚洲一区二区三区夜色 | 久久久这里有精品999 | 国产在线精选免费视频8x | 欧美日韩高清一区二区三区 | 91日韩| 欧美一区二区视频在线观看 | 国产一级特黄a大片99 | 国产精品久久久久久久久鸭 | 欧洲毛片 | 国产一区亚洲二区 | 欧美高清一区二区三 |