小吉脫絲成長記

今天終於把計算器初步寫完了。。。搞多差不多快兩個星期。。。已經看到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方法。

怎么能研究出炸药呢?爱迪生不经历上千次的来自失败,怎么能发明电灯呢

小吉脫絲成長記

相关文章:

你感兴趣的文章:

标签云: