Android學習進度---小小計算器

今天終於把計算器初步寫完了。。。搞多差不多快兩個星期。。。已經看到A神的不耐煩的凶光。。。說起A神,他指出第一章的無節操許願有BUG。。。FOR LOOP走不了100次~因為把finish()加在循環了,第一次就會死掉了。。。媽的。。我犯低級錯誤了大哭

說點高興的,堅持了兩星期每天最少跳舞半小鐘,由原本跳輕鬆的到現在能跳Where have you been野性大活動量的,青春就是要流汗!!!

只要今個星期能堅持早睡早起,就可以開始清早打藍球再敲碼的夢想了~~夏天到來的時候,小吉就可以穿比基尼去沙灘流浪,一定要打破沒有帥哥搭訕的宿命!!!

另外,朋友仔安卓哥要去實習了~在這裡就祝他前程錦繡奋斗三個月後就成大神了!!! 小吉也要好好努力趕上了!!!


記下計算器學到的東西:(感謝loader大神,安卓哥的教導才能完成)



作為第一個做的小東西,計算器需要工作是簡單的,涉及佈局,小量判斷Button對應的功能,運算部分就交第三方完成了。

首第一步當然是分析現存市面上的計算器,它們的介面、鍵盤的分佈、數字由初始時 到 每次按鍵 到 出現答案時的反應等等


過程中看了不少教程,有的很好,有的很垃圾~篩選了最精華放到本文最尾的地方~接下來就是記下遇過的問題~

如果有任何更聰明的方法,請留言指正!!! 送果照回謝~!大笑


設計定下來後,就是先做佈局~


GridLayout: 當初看的教程是用GridLayout,可是在我設計的UI並不合適GridLayout,因為它的只能製作整齊格子式的佈局,做不了跨格合併;

所以又換成了TableLayout,可是一邊看教程一邊做發現用法挺煩氣的,功能雖然可以實踐,可是小吉不爽!!! 抓狂

結果還是靠安卓哥點化了,用簡單的Linearlayout + weight + stroke就是你要的東西麻~


自定義style因為第一次做安卓麻~很多功能都是摸過才知道,就算簡單一個按鈕背景都可搞上半天。。。也好,用上了自定義style,雖然沒用上安卓哥教的include,反正都記錄在案了~簡化了重重複複的xml~其實xml的感覺跟css真的很像,可是沒有css那麼free style咋搞都行~


Shape-concerns-radius: 之後就是用shape的功能畫圓角button,媽的~忍不住要操一下。。。因為只在eclipse preview XML,為咋調不出圓角呢?一放真機就看到了。。。所以新人們,多用真機測試。。。別像小吉渣渣菜的浪費時間!!尴尬


9圖 vsShape-rotate:另外,因為想做一個小三角形做背景裝飾一下麻~多情的小吉~不對~多慮的小吉又糾結了。直接用PS畫一只進去? 要畫多大 ? 大的佔資源 / 小的又失真了。。。好的,我發現地球是有9圖的!!! 可是實驗下9圖也不是萬能,不規則的東西拉起來不好看,重點是一隻破三角為什麼要用圖? 直接用shape畫出來再自動跟據尺寸放大,不是更好嗎?。。。。。結果小吉跑去搞三角形關係了~~~~方法就是旋轉方形,再偏移位置,讓不需要的地方藏在畫面以外,露一隻破角出來~.~" 咬咬咬咬!!!!


{如果有幸,高人(你!)在看小吉這篇傻B記錄,有更好更聰明的方法,請狠狠的指正小吉!}



佈局後,就是功能實踐了~

雖然老外有不少教程是DIY運算功能,可是小吉實在沒自信測試數式上的運用。。。所以就尋找第三方計算的方法。


IKExpression: 原意是不錯的,只要把數式輸入就能返回答案。。。可是在測試時就出現奇葩反應了。。。0.1 +0.3 = 0.4 (這不是挺正常嗎?可是。。) 0.1+0.2=0.300000

卧操。。。哪來的尾數.....雖然感覺上是float和decimal的問題,手動處理一下小數位就可以了。。。但它的表現觸動了缺乏安全感的小吉~我就是投下不信任一票了!!!


形形式式的JAVA包: 試了幾種不同的包。。。不是文檔不足,就是用法煩人。。。

WebView + js-eval() : 感謝loader大神指引明路!!! 雖然一開始小吉是拒絕用這方法。。。感覺就是不夠血統純正,好端端的java混上了Javascript委屈可是它是最直接了當計出四則混算。A神也覺得不值得花時間糾結在這問題上,他也多次表明再耗下去,還不如自己做運算功能。同時,這也是個好機會學習WebView和JS的交互~反正過程是傻事百出....我也是摸不著頭腦....怎樣把事情完成的!!!


|---@JavascriptInterface: 它是多重要的一個聲明(Android 4.2以上)沒了它是執行不了addJavascriptInterface()...JS的數據就一直傳不回安卓了!!!


|---setWebChromeClient:因為開始是直接用alert();測試安卓傳過來的數據,就是對話框死也不彈出來。。

(突然想起了,曾經有個少年在群裡查詢webview問題一個多月還堅持....他說過弄懂會教我的.....結果他也是沒弄懂,直接找同學幫忙完成了....小吉就是一個死賴不放棄的人!!!姐我現在已弄明白了!!!哈哈)

setWebChromeClient就是專門處理瀏覽器的工作,js的對話框就是歸它管的!!單純用webview是不夠的~~


|---setWebViewClient:以為有了setWebChromeClient就無敵嗎?程序麻...總會懂送你挫敗感的!!

"Uncaught ReferenceError: functionName is not defined"

(大概意思是:本程序是能在webview運行js了,可是我就是看不見你的js function囉)

簡單原因。。。在呼叫時,js還沒完成載入呢~所以就用上了setWebClient(它是Webview的經紀人,主管事件通知)

用上它的onPageFinish 就能妥妥找到你的js方法。

可是我的計算器最終是沒用上setWebChromeClient和setWebClient也能交互,哈哈!!!因為我一開始就是缺了他媽的@JavascriptInterface!!! 好吧...我又學兩個功能了~


|---runOnUiThread:千古之迷....小吉也不知道為什麼它會出現在我的代碼裡。。。在js調用安卓的方法時,我想更新一個TextView~沒反應!?為什麼~?有錯誤提示嗎?是不是用子線程去更新UI了?.......卧操.....我不知道是為什麼!!!沒有錯誤提示!!!!只知道把東西放在runOnUiThread內就行了...FUCK!!! 這是一個查了Google也沒法解釋的千古之迷....快還我bug!!!送我一句"CalledFromWrongThreadException: Only theoriginal thread that created a view hierarchy can touch its views."好讓我安心知道自己是跑了子線程....現在我根本就不能知道自己在主線程還是在子線程!!!大哭


感覺有點吐血。。。。以上就是這兩個星期,小吉花青春換來的菜菜經驗....如果有人能解答千古之迷~小女子不勝感激!!!


接下來,小吉又要開始在安卓菜菜之路挑戰下一回合~本星期運動目標:集中練出人魚線!!!每天舉啞鈴~深蹲!!!

做程序的人,男的要忍得住勾引,女的要抵得起寂寞~靜心才能成事~要進入自閉MODE才行呀~闭嘴


可是小吉還是沒有到達讓你留意的水平。。。A神等我趕上你的步伐,把我收了好嗎?帶我飛一輩吧! ~ 包容一個渣渣菜的小吉!

感謝Steam讓CS-GO半價,小的入手了!!!做好APP,玩好DOTA!!!


 -----------------------華麗分隔線----------------------------

實作計算器教程:https://www.zybuluo.com/stepbystep/note/67061

定義Style:http://www.jollen.org/blog/2009/06/jollen-android-programming-17.html

圓角框框:http://www.itbbu.com/163.html

XML畫三角:http://stackoverflow.com/questions/2517589/making-a-triangle-shape-using-xml-definitions

Webview js 交互:http://blog.csdn.net/wangtingshuai/article/details/8631835

WebView的兩個方法:http://www.android100.net/html/201306/26/3290.html

9圖小實驗: http://blog.csdn.net/aggies/article/details/44139909

 -----------------------華麗分隔線----------------------------

以下是小吉的自言自語區

親愛的CSDN審核員:

小小女子是外地人,打的都是繁體字~讓你看辛苦呢~有需要換成簡體字嗎?

因為小的第一次使用中國博客~發現原來每次發佈也要審批的~修改也是需要審批~

你們是用程序自動過濾敏感內容?還是真人目測審批的? 我常說粗言穢語,能過審批嗎?可怜

如果是目測審批~小吉都喜歡多次修改,你是不是要重新看幾遍?.....額.....那就真的對不起了.....

如果你真能看到這段留言~可以回應我的好奇心嗎?如果你想保持神秘感~可以私聊一下小吉~

如果審批真的是自動搜索篩查的~就由小吉自言自語一下~~~~~~





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值