一個App完成入門篇(三)-完善主框架

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

本節教程將繼續帶領大家完善教學demo 將要學習的demo效果圖如下所示 1. 如何導入完整項目 本節示例demo請參考下載地址,可以導入到設計器中學習。 2. 完善主框架在上一節教程搭建主框架中大家已經學會瞭如何主框架,本節教程使用上一節未完成的demo。 我們分析一下demo機構,通過點擊Bot


本節教程將繼續帶領大家完善教學demo

  • 導入項目
  • 完善主框架
  • 完成viewShower子視圖
  • 打開新頁
  • 啟動動畫

將要學習的demo效果圖如下所示

1. 如何導入完整項目

本節示例demo請參考下載地址,可以導入到設計器中學習。

2. 完善主框架
在上一節教程搭建主框架中大家已經學會瞭如何主框架,本節教程使用上一節未完成的demo。

我們分析一下demo機構,通過點擊Bottom Bar上的不同按鈕來切換內容,這種情況下最適合用ViewShower這個組件,ViewShower是一個包含多個子VIew的UI容器組件。我們從組件列表裡拖一個ViewShower到UI設計頁面中,並通過調整x/y/width/height為0,0,750,1109將其固定在body的位置,把組件ID改為do_ViewShower_main。

雙擊index.ui.js打開代碼編輯頁面,先通過ID實例化ViewShower組件,再給ViewShower綁定數據,在DeviceOne的組件庫中,ViewShower、ListView等這種容器類都是採用MVVM形式來綁定數據的,使得開發人員可以將View和業務邏輯分離出來。

這裡先給ViewShower定義需要綁定的數據viewShower_data,其中id需要保持唯一,否則後id已經存在,會覆蓋之前的View;path為需要展示的子View所在的UI頁面的絕對路徑,此時path所指的三個頁面還不存在,一會來創建。定義好數據後,通過ViewShower的addViews方法將數據綁定進去,在調showView方法使其先預設顯示第一個頁面,即id為”news”的子頁面。

想要完成每點擊一個按鈕就切換顯示的子View,還需要在每個按鈕的點擊事件裡加上切換子View的方法showView,並通過show不同id的子View來切換頁面。

3. 完成viewShower子視圖
接下來我們來完成需要展示的子View視圖。

view目錄上點擊右鍵,選擇New-Folder,填寫要創建的目錄名稱為”news”,新建後再在news目錄上點擊右鍵,選擇New-UI File新建名稱為main的UI界面,在創建頁面的同時IDE會同時創建一個跟main.ui關聯的代碼文件main.ui.js,雙擊打開main.ui文件,向頁面的最外層ALayout中再拖進一個ALayout組件作為viewShower子View的最外層容器,修改它的id為do_ALayout_main,調整高度為1109,因為在主頁面index.ui中viewShower的高度也為1109,如果子View的寬高超過它父容器viewShower的寬高會導致內容顯示不全的問題

再向該頁面的do_ALayout_main中拖拽一個Label,修改Label的text為“新聞”。這樣viewShower的一個子View就完成了,其他兩個子View也是相同內容,所以只需負責該頁面即可,在news目錄上點擊右鍵,選擇Copy,再點擊View目錄選擇Paste,填寫目錄名為“find”,打開main.ui修改Label的text為“搜索”即可,同樣的再複製、粘貼一次,修改目錄名為“contact”、Label的text為“通訊錄”,這樣viewShower的三個子View就完成了。(再多複製一份,目錄名改成“feedback”,Label的text為“反饋”,為後續做準備)

4. 打開新頁
在Bottom Bar中,我們想通過點擊第四個按鈕“反饋”來另外打開一個新頁面,讓用戶填寫反饋信息。先雙擊打開feedback目錄中的main.ui文件,在do_ALayout_main中繼續添加一個ALayout作為該頁面的top,ID改為do_ALayout_1,調整寬高分別為750/128;再向do_ALayout_1中添加一個ALayout用於點擊,ID改為do_ALayout_back,調整位置、寬高分別為x=4,y=6,width=147,height=110;再向do_ALayout_back中添加一個Label用於展示文字,ID改為do_Label_3,將Label的text改為“返回”。

打開main.ui.js,訂閱do_ALayout_back的點擊事件用於關閉該頁面。同時處理在點擊android設備的虛擬返回按鈕時也關閉該頁面。

回到index.ui.js,在do_ALayout_b3的touch事件中調用app的openPage方法,將目標地址指向剛剛調整過的/feedback/main.ui頁面,將頂部狀態欄顯示狀態改為透明(控制statusBarState參數為“transparent”)以全屏形式打開新頁,同時將打開頁面的動畫類型(animationType)改成從右往左推出(push_r2l)。

5. 啟動動畫
為了讓app有更生動的效果,我們讓demo一進入的時候有一個動畫效果作為歡迎頁面,在source://view下創建一個跟index.ui平級的start.ui頁面,在根ALayout里添加一個與根ALayout一樣大小的ImageView,將ID改為do_ImageView_content,給這個ImageView一個source顯示圖片;再添加一個Label組件,修改ID為do_Label_welcome,修改do_Label_welcome的fontColor/fontSize屬性調整顯示字體的顏色和大小,頁面就完成了。再雙擊打開start.ui.js頁面,

先實例化當前頁面的UI組件,並定義需要使用到的相關組件,在定義一個MM組件animation用於調用UI組件的動畫,這個動畫是控制ImageView組件的,所以ID定義為img_anima,通過修改img_anima的屬性,我們可以操控這個動畫的走向,這裡想讓ImageView的動畫是縮放,所以選擇scale方法,通過給scale方法的不同參數以不同的參數值來製作這個動畫,比如delay設置成0既是讓動畫立即開始,duration設置成2000是讓整個動畫時間為2秒等等..

接下來也是同樣的方法給Label定義一個旋轉的動畫,最後通過調用所有UI組件都通用的animate方法我們將定義的這些動畫加在UI組件上併在動畫完成後打開新頁main.ui。

到此,本節教程就結束了,趕快拿起手機打開調試來查看效果吧!


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

-Advertisement-
Play Games
更多相關文章
  • Delphi Seatle can link Delphi project with Static library files(*.a): 1.at Delphi IDE, Add the "*.a" file Path to Library Path: a. Tools Menu b.Option
  • 我們現在做的一些非業務,如:日誌、事務、安全等都會寫在業務代碼中(也即是說,這些非業務類橫切於業務類),但這些代碼往往是重覆,複製——粘貼式的代碼會給程式的維護帶來不便,AOP就實現了把這些業務需求與系統需求分開來做。這種解決的方式也稱代理機制。 先來瞭解一下AOP的相關概念,《Spring參考手冊
  • 我是在ubuntu14.14 安裝的 lnmp。 部分擴展。均已安裝好,但是我用apt-get 方式安裝 redis和curl擴展時,我的配置都設置但是從phpinfo裡面看沒有響應的配置項。 於是我找在我phpinfo 載入的是 /etc/php5/fpm/php.ini 下的配置文件,我用php
  • 文章結尾有常用命令的圖表哦!git 配置基礎配置別名配置換行符配置推薦配置core.autocrlfcore.safecrlf記住我git命令詮釋大全git clonegit initgit addgit brachgit tag打包上線啦 git archive任務簡報 git shortlog常...
  • 在elasticsearch中,有時會想要通過索引日期來篩選查詢的數據,此時就需要用到日期數學表達式。 更多內容參考 "Elasticsearch翻譯彙總" 基於日期數學表達式的索引 模式如下: 其中各個欄位含義為: static_name 是索引的靜態部分 date_math_expr 是日期的表
  • Atitit.複合文檔的格式 標準化格式 1. Docfile1 2. Iso Cdf cd file1 3. Zip1 4. Ooxml1 5. Odf :OpenDocument Format2 5.1.1. 本質2 6. 參考3 paip.docfile二進位複合文檔 前言Docfile Do
  • 本文分為技術篇、產業篇、應用篇、展望篇四部分 2006年項目成立的一開始,“Hadoop”這個單詞只代表了兩個組件——HDFS和MapReduce。到現在的10個年頭,這個單詞代表的是“核心”(即Core Hadoop項目)以及與之相關的一個不斷成長的生態系統。這個和Linux非常類似,都是由一個核
  • 首先,描述一下問題。由於需要後臺取出數據,遍歷展示在table中,大體如下: 後臺取出的是 Map<String , List<Object>>,下麵是我寫得比較朴素一點的寫法: 以上方法,如有不妥之處,請予以指正。望與大家多多交流。 當然jquery的$.each(map,function(key
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...