一個App完成入門篇-搭建主框架

来源:http://www.cnblogs.com/wjiaonianhua/archive/2016/03/16/5280226.html
-Advertisement-
Play Games

通過第一課的學習,你已經掌握瞭如何通過debug調試器來跟PC上的設計器聯調來實時查看UI設計效果、調試代碼了,接下來通過一系列的demo開發教學你將很快上手學習到如何開發一個真正的App。 要開發App,最重要的就是確定主框架,好的主框架能起到減少工作量、簡化代碼的作用,而頁面通常需要產品人員的U


通過第一課的學習,你已經掌握瞭如何通過debug調試器來跟PC上的設計器聯調來實時查看UI設計效果、調試代碼了,接下來通過一系列的demo開發教學你將很快上手學習到如何開發一個真正的App。

要開發App,最重要的就是確定主框架,好的主框架能起到減少工作量、簡化代碼的作用,而頁面通常需要產品人員的UE設計和美工人員的UI設計,如下圖所示,這兩個步驟完成後才開始實現功能,由於篇幅限制,本教程不再贅述如何設計UI和UE,直接通過開發一個仿微信主頁面的頁面來做示範。

完整的demo請參考下載地址,可以導入到設計器中學習,導入教程:
下載到本地後,解壓到某個目錄中

在設計器中選擇File-Import-DeviceOne-Existing projects into Workspace點擊Next選擇剛剛解壓後的目錄,再次點擊Next即可將完整的demo導入設計器中。

 


在上一節教程從Hello world開始中大家已經學會瞭如何創建項目,這裡直接使用該項目。

首先在IDE中展開項目層級結構

app.js是整個項目的入口腳本環境,雙擊該文件在右側進入編輯。需要註意的是app.js較為特殊,如果要在該文件內使用DeviceOne的組件,需要先require(“DeviceOne”),如第一句代碼所示,而其他.js腳本環境是不需要引用可以直接使用的。在這個腳本環境中我們要做的操作是打開一個新頁面,需要調用的是App組件的openPage方法,openPage總共有八個參數,這裡先簡單介紹用到的其中三個,其他參數的用法詳見App的openPage。這裡整段代碼含義就是先定義一個sm類組件分類介紹的App,在App的loaded事件中打開一個新頁。loaded事件會App啟動完成時觸發,所以我們把打開新頁的打開寫在這裡面。其中openPage方法的source參數表示的是需要打開的頁面的地址(絕對路徑);statusBarState參數表示的是頂部狀態欄顯示狀態,這裡選擇的是transparent,這樣設置能讓打開的index.ui頁在手機上顯示的為全屏效果,即隱藏手機的頂部狀態欄;animationType參數表示的是打開頁面時的過渡動畫類型,這裡選擇fade淡入淡出的方式,這樣就能以淡入淡出的過渡動畫全屏打開到index.ui頁面了。

接著我們雙擊打開index.ui,進入ui視圖的編輯。

所有的頁面展示都是通過在.ui文件中羅列組件來實現,如上圖綠框所示;若需要添加ui組件,只需在組件列表Components(紅框所示)中拖拽組件到ui畫布上,黃框OutLine中展示的是當前頁面的層級關係,在OutLine中越靠下麵的組件會展示在頁面越上層。

再簡單分析一下主界面,整個項目的尺寸是iphone6的尺寸750x1334,分上下兩個部分,底部是一個Bottom Bar導航欄,上面是隨著底部導航切換的界面

頁面佈局示意圖

這節主要介紹如何實現Botton Bar。

首先打開OutLine,

在RootView中只允許有一個容器類組件,其他組件都是放在這個容器類組件中的,通常我們選擇ALayout絕對佈局組件來當這個容器組件。我們點擊選中該組件(如上圖紅框所示),通過屬性列表修改該組件的id為do_ALayout_root,預設大小是跟整個項目的大小相同的750x1334,再繼續像該容器內添加四個ALayout,id分別修改成do_ALayout_top、do_ALayout_body、do_ALayout_line和do_ALayout_bottom,它們的id對應了它們的功能分別如頁面佈局示意圖中所示的top、body、line和bottom。分別調整著四個ALayout的x、y、width、height屬性,以調整它們在頁面中的位置。再繼續向do_ALayout_bottom容器中添加四個ALayout,id分別改為do_ALayout_b0/b1/b2/b3,

再分別向這四個ALayout中添加一個Label和ImageView組件,並調整它們的x、y、width、height以達到下圖所示效果

此時你的項目中ImageView沒有顯示出圖片,需要在source://image或者創建其他想要存放圖片的目錄將想要展示的圖片放進去

再分別選中四個ImageView組件,修改它們的source屬性指向存放圖片的絕對路徑,就能顯示圖片了。
這裡需要註意的是,DeviceOne有強大的屏幕適配技術,但可能會在某些局部對圖片顯示形狀要求嚴格的地方會稍微有些變形,為了保證點ALayout有一個特殊屬性isStretch,這裡將該屬性設置成false來保證ImageView不變形。

有了頁面效果,接下來就需要使頁面動起來。雙擊index.ui.js進入代碼編輯頁,

先通過組件類型定義三個sm組件Notification、Global和Page,在需要的地方可以通過自定義對象名+.的方式來使用該組件的屬性、方法和事件。再將所需要用到的ALayout、ImageView、Label定義一下,ui組件的定義方式跟sm組件類似,不同的是ui(“”)括弧里填的是剛剛在.ui頁面修改的對應組件的id名。

ImageView和ALayout都有點擊事件(touch),為了讓用戶有更好的體驗,我們加大點擊響應範圍,將touch事件訂閱在Bottom的四個ALayout中,併在該事件中通過改變其他ALayout里Label的文字顏色和ImageView圖片source來達到點擊選中的效果。

另外我們想讓這個demo在android設備上能通過點擊手機上的“返回”虛擬按鍵來返回到debug首頁,需要用到剛剛我們定義過的Notification、Global和Page組件,還有一個mm組件Timer定時器,mm組件的定義方式跟sm組件相同,只需要組件類型即可定義。
點擊android手機上的“返回”虛擬按鍵會觸發Page組件的back事件,所以我們訂閱back事件併在back事件里處理返回還是退出。

到這裡,一個能響應點擊事件並切換圖片的demo就完成了,是不是很簡單易學呢?!我們可以從上一節教程中所學的手機和電腦聯調代碼的方法來趕快驗證一下所學內容啦。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是一本框架性的書,它從分散式網站架構設計需要考慮的內容出發,介紹了相關的技術。雖然每一部分講解不是特別深入,但是原理清晰,案例豐富,非常不錯。 現在的網站都越做越大,分散式是必須的選擇,通過這本書我看到了淘寶是怎麼做的,對於今後的工作很有幫助。 作者也是一位非常年輕的工程師,很不錯
  • 併發思想提煉(1)(理解併發,避免死鎖) 一直做伺服器後端和基礎組件平臺開發,常常用到併發,故簡單放些乾貨,一來算是總結,二來希望後人少走彎路, 寫到哪兒算哪兒,不定期更新。 1.    Introduction 先來明白一些概念。Concurrency併發和Multi-thread多線程不同 你在
  • 觀察者(observer)模式定義了一對多的依賴關係,讓多個觀察者對象能夠同時監聽某一主題對象。這個主題對象中的狀態發生改變時,就會通知所有的觀察者對象。 觀察者模式的結構圖: 結構中各個部分的含義: 源代碼: 抽象主題類(Subject):   具體主題類(ConcreteSubject):  
  • 1.ServiceStack服務擁有自身的容器—Funq.Container 當我們使用介面註入的方式調用底層方法時,我們需要在AppHost中重寫Configure(Funq.Container container)方法,在方法中添加container.RegisterAutoWiredAs<T,
  • 可以通過http://htmlpreview.github.io/這個網站,直接線上預覽html頁面。 ↓ ↓ 可以發現:這個網站直接將github上的頁面地址當做參數來傳遞。
  • 上海樂司凱信息科技有限公司 是上海邁伊茲咨詢有限公司的子公司 地址是在臨空經濟區,攜程那路,北翟路外環線 稅前10k 20k,說是有牛人30k也能承受,14薪 有意向留言好了 1、精通HTML/HTML5/XHTML,CSS,精通運用CSS+DIV佈局,可使用HTML5、CSS3、JavaScrip
  • 這是一款基於segment.js製作的非常有創意的分段式SVG文字動畫特效。這個文字動畫特效通過動畫SVG的描邊路徑來製作各種文字的動畫效果,效果非常的贊。 這個SVG文字動畫特效的第一個DEMO中的最後幾個例子使用了mo.js插件,一款由Oleg Solomka編寫的用於製作網頁圖形動畫的Java
  • sticky組件,通常應用於導航條或者工具欄,當網頁在某一區域滾動的時候,將導航條或工具欄這類元素固定在頁面頂部或底部,方便用戶快速進行這類元素提供的操作。本文介紹這種組件的實現思路,並提供一個同時支持將sticky元素固定在頂部或底部的具體實現,由於這種組件在網站中非常常見,所以有必要掌握它的實現...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...