自己如何開發(fā)一款app?:手把手教你做一個(gè)“專注睡前的APP”,來,學(xué)習(xí)一下。前言從零開始,手把手帶你實(shí)現(xiàn)一個(gè)「專注睡前的 APP」。睡覺之前如果:-app,開發(fā)
手把手教你做一個(gè)“專注睡前的APP”,來,學(xué)習(xí)一下。
從零開始,手把手帶你實(shí)現(xiàn)一個(gè)「專注睡前的 APP」。睡覺之前如果能有一個(gè) APP,能讓我們寫一寫這一天的見聞或者心得,同時(shí)又能看一會(huì)段子、瞄一會(huì)好看的妹子,放松一下疲憊的身心那該多好,這也是我完成這個(gè) APP 的原因。APP 的全部代碼我已經(jīng)分享到 Github 上了,需要的直接 點(diǎn)擊這里,如果喜歡的話,麻煩給個(gè)贊,謝謝啦。
在開始寫正文之前,先來一波效果的展示,看看五天過后我們能實(shí)現(xiàn)怎樣的效果
本次的教程分為 5 天,內(nèi)容分別為:
Day one
俗話說,萬事開頭難,在開始敲代碼之前,先讓我們來做一些必要的準(zhǔn)備,這樣才能事半功倍嘛!
既然要做一個(gè) APP,那我們首先還是得把 APP 的功能都列出來,有了方向才能更好的努力,因?yàn)槲蚁胱龅氖且粋(gè)專門給睡覺前用的 APP,所以我覺得應(yīng)該有以下的這些功能
雖然說需求不多,但是卻要運(yùn)用到網(wǎng)絡(luò)、數(shù)據(jù)存儲(chǔ)、圖片緩存、UI 設(shè)計(jì)等內(nèi)容,相信整個(gè) APP 完成下來,必定能鞏固我們的 Android 基礎(chǔ)。
我們這個(gè) APP 主要有三個(gè)模塊,日記模塊主要是運(yùn)用到了數(shù)據(jù)庫的知識(shí),難度不大。但是,段子模塊和妹子模塊的數(shù)據(jù)要從哪來,這便是要好好考慮的了。幸好現(xiàn)在是個(gè)開源的時(shí)代,很多的數(shù)據(jù),網(wǎng)上已經(jīng)開源出來了。
我們先來看一下數(shù)據(jù)的內(nèi)容
上面那兩段代碼分別是段子和妹子模塊的 json 類型的數(shù)據(jù),我已經(jīng)將一些沒用的字段去掉了。剩下的都是我們想要的數(shù)據(jù)?梢钥吹蕉巫訑(shù)據(jù)中,有著段子的內(nèi)容,以及發(fā)布者的頭像和名字。而妹子數(shù)據(jù)中有著圖片的 url、id、以及圖片的類型。相信有了這么豐富的數(shù)據(jù),我們想要完成這個(gè) APP 也是有底氣了。
Day two
既然我們想要完成一個(gè)好看的 APP,那么好看的界面便是必不可少的,這里我強(qiáng)烈推薦 APP 界面的設(shè)計(jì)必須盡量遵從 Google 提出的 Material Design,在這個(gè)推薦一個(gè)能夠讓我們實(shí)現(xiàn) Material Design 變得更加簡(jiǎn)單的網(wǎng)站 material design palette,我這個(gè) APP 的配色就是用這個(gè)網(wǎng)站完成的,貼幾張圖片,讓你感受一下它的強(qiáng)大。
借助這個(gè)網(wǎng)站便能讓我們完成 APP 的配色以及圖標(biāo)的收集,為下一步功能的實(shí)現(xiàn),先打好了基礎(chǔ),至于界面的設(shè)計(jì)就仁者見仁智者見智了,篇幅有限,我就不多講了。
APP 的最終設(shè)計(jì)效果如下:
二、公共類的實(shí)現(xiàn)
因?yàn)檫@個(gè)項(xiàng)目有三個(gè)模塊,有一些東西其實(shí)是可以通用的,如果我們先把這些能夠通用的東西,封裝起來,供給所有的模塊調(diào)用的話,相信會(huì)大大提高我們的開發(fā)效率。
這個(gè) APP 中,很多地方都要用到網(wǎng)絡(luò)請(qǐng)求,因此也就很有必要將網(wǎng)絡(luò)請(qǐng)求封裝起來,因?yàn)檫@個(gè) APP 的規(guī)模比較小,因此我選擇了 Volley 這個(gè)網(wǎng)絡(luò)框架作為我們網(wǎng)絡(luò)請(qǐng)求庫,把網(wǎng)絡(luò)請(qǐng)求封裝起來,哪個(gè)地方需要,調(diào)用一下就行了。對(duì)于網(wǎng)絡(luò)請(qǐng)求,我覺得每個(gè)程序員都該懂點(diǎn) HTTP,這里附上一篇有關(guān) HTTP 的文章程序員都該懂點(diǎn) HTTP。
先讓我們來寫個(gè)將網(wǎng)絡(luò)請(qǐng)求進(jìn)行回調(diào)的接口
然后將網(wǎng)絡(luò)請(qǐng)求封裝起來
2、Json 解析的幫助類
因?yàn)槲覀冞@個(gè) APP 中,獲取到的數(shù)據(jù)都是 Json 格式的,因此也就有必要將有關(guān)的 Json 解析封裝成一個(gè)工具類,傳入一個(gè) String 類型的數(shù)據(jù),直接得到數(shù)據(jù)實(shí)體類的 List。
3、HomeActivity(主頁面)的封裝
主頁面我用的是 TabLayout + ViewPager + Fragment,也是現(xiàn)在主流 APP 主頁面的顯示方式。主界面底部是我們?nèi)齻(gè)模塊的圖標(biāo)和名稱,通過左右滑動(dòng)能實(shí)現(xiàn)界面的跳轉(zhuǎn)。
底部圖標(biāo)的實(shí)體類 CommonTabBeanViewPager + Fragment 通用的 AdapterDay three
關(guān)于日記模塊的實(shí)現(xiàn),其實(shí)我是復(fù)用了以前寫過的一個(gè)日記 APP,具體的思路和做法,可以參考我的這篇文章 Android 一款十分簡(jiǎn)潔、優(yōu)雅的日記 APP
Day four
一、圖片的獲取
1、根據(jù)返回的數(shù)據(jù)來編寫圖片的實(shí)體類
2、圖片的展示可以看到我是用瀑布流的方式來實(shí)現(xiàn)圖片的展示,效果還不錯(cuò),但其實(shí)實(shí)現(xiàn)起來也是很簡(jiǎn)單的
先寫個(gè)圖片的布局作為 RecyclerView 的 Item
可以看到我在 ImageView 的外面加了一個(gè) CardView,這個(gè)一種卡片式布局,能讓圖片看起來就像一張卡片一樣,相當(dāng)?shù)膬?yōu)雅、美觀。
接著編寫 Adapter,將數(shù)據(jù)和界面進(jìn)行綁定
最后在 Fragment 進(jìn)行數(shù)據(jù)的獲取,以及布局的初始化就行了
3、詳情頁面的展示干巴巴的,整個(gè)模塊只能顯示妹子的圖片怎么行呢!!怎么著也得能查看大圖,根據(jù)手勢(shì)放大縮小,以及瀏覽下一張圖片才行嘛,說干就干。
因?yàn)閳D片需要有根據(jù)手勢(shì)來放大縮小的功能,因此我便想到了 PhotoView,這是網(wǎng)上一個(gè)大神寫的,繼承自 ImageView 的一個(gè)自定義控件。圖片加載我用的是
Glide,如果沒了解過這個(gè)庫的,強(qiáng)烈推薦,一行代碼就能搞定圖片加載,你確定不研究一下。
Day five
段子數(shù)據(jù)的獲取其實(shí)跟妹子模塊的方法基本一樣
先編寫實(shí)體類
寫好實(shí)體類之后,使用我們之前已經(jīng)封裝好的網(wǎng)絡(luò)請(qǐng)求工具以及解析工具,便能將返回的數(shù)據(jù),解析成一個(gè)包含段子實(shí)體類的 List。
老規(guī)矩,先寫個(gè) RecyclerView 的 Item
然后編寫將數(shù)據(jù)和界面進(jìn)行綁定的 Adapter
最后段子頁面中進(jìn)行數(shù)據(jù)和獲取以及界面的初始化
作者:developerHaoz
來源:慕課網(wǎng) 本文原創(chuàng)發(fā)布于慕課網(wǎng) ,轉(zhuǎn)載請(qǐng)注明出處,謝謝合作
程序員學(xué)習(xí)交流請(qǐng)?zhí)砑幽秸n網(wǎng)官方客服微信:mukewang666
回復(fù)暗號(hào)“前端面試”可進(jìn)前端交流群~回復(fù)暗號(hào)“Java”可進(jìn)Java交流群~回復(fù)暗號(hào)“專欄”可進(jìn)程序員交流群~
最為一個(gè)軟件開發(fā)者,目前APP開發(fā)的技術(shù)無非以下幾種:
①原生官方開發(fā),Android和iOS,分別是Java語言(Google現(xiàn)在推kotlin)、object-c(蘋果現(xiàn)在推swift)。開發(fā)效率低下,成本高、性能最好。一般用戶量、流量巨大的APP都選用原生開發(fā),因?yàn)樾阅芎,用戶體驗(yàn)最佳。
②混合開發(fā),代表有ionic、react-native、國(guó)人搞的mui(uniapp).特點(diǎn)就是JavaScript、HTML、CSS快速開發(fā),開發(fā)效率高,性能低于原生開發(fā),成本低于原生開發(fā)。性能不太好、用戶體驗(yàn)低于原生。
③目前Google最新的dart語言框架flutter,跨Android、iOS,一套代碼即可,性能官方說是接近原生、媲美原生。但是該技術(shù)2018才正式推出,生態(tài)還沒有完善豐富,組件少,資料少,至少目前沒有非常成熟案例,在試水階段。
首先先確定自己需要的app功能,然后找一家APP開發(fā)公司洽談功能是否可以實(shí)現(xiàn),在溝通app開發(fā)價(jià)格和工期,確定完成后可以和UI設(shè)計(jì)溝通APP版式,然后進(jìn)入開發(fā)階段。詳細(xì)可以資訊一下山東中揚(yáng)科技。
前幾天整理了NAS上TXT小說 一小半吧 大概有47GB 寫了個(gè)電子小說閱讀器。
當(dāng)然還需要其他軟件配合 比如我這個(gè)有mySQL 和PHP 再加上as里的JAVA差不多了
找專業(yè)的機(jī)構(gòu)學(xué)習(xí)
找一個(gè)外包公司,只要自己那邊把需求功能確定好,找好公司
在門外漢來看,App軟件開發(fā)是一件非常困難的事情,然而使用APICloud快速高效App開發(fā)平臺(tái),輕松6個(gè)步驟就可以完成App軟件開發(fā)。
根據(jù)不同的應(yīng)用需要,為您提供了Deep Engine(適合 Web 開發(fā)者)、SuperWebView(適合已有原生應(yīng)用的開發(fā)者)以及數(shù)據(jù)云(適合需要快速簡(jiǎn)便實(shí)現(xiàn)服務(wù)端的開發(fā)者)。
APICloud平臺(tái)為不同需求的人提供了不同的產(chǎn)品,如果你要從零開始制作App,那么選用Deep Engine產(chǎn)品,用HTML5等標(biāo)準(zhǔn)Web語言去開發(fā)和制作App,iOS和Android兩個(gè)系統(tǒng)是同時(shí)生成的。
如果你已經(jīng)有現(xiàn)成的App,希望加速開發(fā)和制作的周期,或是降低升級(jí)的難度和時(shí)間,那么選用SuperWebview產(chǎn)品。在已有的App中嵌入SuperWebview,就可以使用Web語言去繼續(xù)開發(fā)和制作了,這樣降低成本,縮短周期。
Sublime Text、Eclipse和Webstorm,耳熟能詳?shù)腁pp開發(fā)工具都在APICloud上集成,你也可以選擇使用APICloud Studio開發(fā)工具。使用你熟悉的HTML工具,再加上APICloud的插件,以2-3倍的效率進(jìn)行App制作。
APICloud不會(huì)對(duì)開發(fā)工具做任何限制,使用任何 HTML5 開發(fā)工具都可以進(jìn)行 APICloud 應(yīng)用的開發(fā)工作。
如果您對(duì) APICloud 開發(fā)尚未熟悉,在眾多 HTML5 開發(fā)工具中,我們更建議您選擇以下開發(fā)工具:
APICloud Studio3
APICloud Studio 3 是 APICloud 推出的一款更適合前端工程師的移動(dòng)應(yīng)用集成開發(fā)工具,基于業(yè)界領(lǐng)先的代碼編輯器-Vscode深度定制 ,與 APICloud 平臺(tái)的各種云端移動(dòng)開發(fā)服務(wù)緊密結(jié)合,可以快速構(gòu)建多端應(yīng)用, Windows、Mac和Linux可以選擇自己喜歡的操作系統(tǒng)進(jìn)行開發(fā)。
Sublime Text 3
Sublime APICloud Plugins 是 APICloud 為開發(fā)者提供的一套開源的 Sublime Text 擴(kuò)展插件,包括:應(yīng)用管理、應(yīng)用框架、頁面模板、代碼提示、代碼管理、Widget 打包、真機(jī)同步、日志輸出、管理自定義AppLoader等功能,其他的功能插件也在不斷增加,這些插件已被 Package Control 成功收錄,開發(fā)者可以直接在 Sublime Text3 中下載安裝;所有插件都已開源,開發(fā)者也可以在此基礎(chǔ)上按需求擴(kuò)展自己的插件。
APICloud聚合了幾乎所有國(guó)內(nèi)主流的云服務(wù)模塊,如支付、社交分享、視頻直播、IM、語音會(huì)議等。這些模塊都在聚合API中,你可以一站式選用App制作中所需的所有功能模塊,一鍵就可以集成,快速高效。
第四步:App的服務(wù)端開發(fā)
你可以選擇自己的本地服務(wù)器進(jìn)行相連,也可以試用由APICloud的服務(wù)器端產(chǎn)品——數(shù)據(jù)云。數(shù)據(jù)云能夠幫助你減少70%服務(wù)器端編碼工作量,支持基于Docker技術(shù)的私有云環(huán)境。并且提供數(shù)據(jù)存儲(chǔ)服務(wù),支持在線設(shè)計(jì)NoSQL數(shù)據(jù)表,動(dòng)態(tài)生成RESTFul API。
大量的模型庫及內(nèi)置模塊,方便用戶快速實(shí)現(xiàn)所需,可靠的BaaS服務(wù),幫助用戶避開服務(wù)器維護(hù)的泥潭。支持服務(wù)按需擴(kuò)容,無須擔(dān)心流量過載。
第五步:在線生成App安裝包
做完以上四步驟后,其實(shí)App制作的過程已經(jīng)結(jié)束了。下面就是將這一套代碼編譯生成iOS和Android兩套安裝包,在這里,APICloud不僅提供真機(jī)調(diào)試功能,可以使你看到App最終的效果,還針對(duì)12個(gè)常用的Android市場(chǎng),還提供一鍵生成渠道包服務(wù),幫助你輕松上線到Android應(yīng)用市場(chǎng)。
第六步:上線App的運(yùn)營(yíng)管理
APICloud不光為App制作提供服務(wù),也提供App上線之后的運(yùn)營(yíng)管理。APICloud運(yùn)營(yíng)云產(chǎn)品涵蓋推送、云修復(fù)、大數(shù)據(jù)統(tǒng)計(jì)分析等App運(yùn)營(yíng)必備功能。版本更新更能實(shí)現(xiàn)應(yīng)用內(nèi)增量更新,無需重新提交App。在這里要單獨(dú)講解一下云修復(fù)和大數(shù)據(jù)統(tǒng)計(jì)分析兩個(gè)功能,通過云修復(fù)可實(shí)現(xiàn)App內(nèi)快速回滾,讓App擁有自我修復(fù)能力在App內(nèi)部快速回滾的過程中,支持?jǐn)帱c(diǎn)續(xù)傳,全面保障App自我修復(fù)的完整性。而大數(shù)據(jù)統(tǒng)計(jì)分析的功能使得App的新增及活躍用戶數(shù)據(jù),幾分鐘即可擺在你的眼前,讓你成為App的運(yùn)營(yíng)專家。同時(shí)還支持對(duì)App進(jìn)行自定義事件統(tǒng)計(jì),幫助你去了解用戶在App中的特定行為數(shù)據(jù)、支持版本、終端分布及錯(cuò)誤報(bào)告。
這就看你是想自己組團(tuán)隊(duì)開發(fā),還是找外包公司了。
但其實(shí)開發(fā)一款能運(yùn)營(yíng)起來的app很難,所以建議找一家有經(jīng)驗(yàn)、專業(yè)的外包公司,為你省心省力省時(shí)省錢~
毛遂自薦~~
開發(fā)一款A(yù)PP,目前是三種方法:
1、自己開發(fā)
2、自己組團(tuán)隊(duì)開發(fā)
3、交給外包公司
這三種方法個(gè)人推薦第三種。先說第一種,自己開發(fā)很省錢,但是功能和界面都不會(huì)做到非常好的地步。第二種是自己組織團(tuán)隊(duì),而團(tuán)隊(duì)少不了配合,并且開發(fā)周期和專業(yè)的團(tuán)隊(duì)比起來會(huì)比較慢,當(dāng)然,如果公司自有的開發(fā)團(tuán)隊(duì)已經(jīng)有一定的實(shí)力那就交給公司自有團(tuán)隊(duì)就好。
接下來說最后一種,交給外包公司,只需要找到靠譜的公司。談好價(jià)格,適當(dāng)?shù)母M(jìn)就可以了。既方便又迅速,并且可以給自己留出一定的時(shí)間去推廣自己的APP。
APP開發(fā)有很多開發(fā)模式,為了能夠更快更好的開發(fā)APP軟件,還需要根據(jù)自己的功能以及開發(fā)預(yù)算掛鉤,如果你的開發(fā)預(yù)算較多的話,則可以選擇原生開發(fā),如果開發(fā)資金有限的話,也可以使用模塊開發(fā),現(xiàn)在APP開發(fā)技術(shù)已經(jīng)很完善。
華裔女賭王就此沒落,生前讓所有 濃情端午粽飄香,青浦邀你“云體 上海:“云端”展現(xiàn)端午節(jié)文化內(nèi) “甜咸大戰(zhàn)”!明星藝人們喜歡什 如何做一個(gè)男人喜歡的情人(如何 當(dāng)你和你同時(shí)出現(xiàn)在同一個(gè)場(chǎng)景中 如何在昏暗的光線下設(shè)置快門速度 教育在生活中的價(jià)值是什么? 世上做壞事的人死后會(huì)面臨什么因 拜登就任總統(tǒng)后的第一步是什么? 同意/不同意:人生最重要的目標(biāo) 二戰(zhàn)后,德國(guó)在調(diào)和分歧方面做得 亞伯·林肯恨白人嗎? 一個(gè)編輯能把你的故事毀得有多嚴(yán) 現(xiàn)在的iPhone6還能堅(jiān)持再用一年 曹操為什么不殺司馬懿? 現(xiàn)在買房是不是最便宜的時(shí)候,現(xiàn) 我身邊的農(nóng)業(yè)銀行營(yíng)業(yè)廳關(guān)了,AT 歐洲媒體評(píng)選CBA最有實(shí)力球員, 榮耀play的6+128和榮耀8X的6+128 螞蟻集團(tuán)是科技公司還是金融公司 請(qǐng)問機(jī)友華為mate30P與華為mate3 聽說老詹修剪一次指甲需要5小時(shí) 為什么說寶寶“一月睡二月哭三月 戴笠人稱戴老板,這個(gè)是怎么叫出 沒有工作能一次性補(bǔ)繳社保么? 我想知道定向師范生和免費(fèi)師范生 肺癌引起的咳嗽是怎樣的呢? 5000mAh電池的5G手機(jī)推薦嗎?要 恒大亞冠表現(xiàn)“差強(qiáng)人意”,你覺