發表文章

目前顯示的是 3月, 2018的文章

238. Product of Array Except Self (Java)

171. Excel Sheet Column Number (Java)

283. Move Zeroes (Java)

104. Maximum Depth of Binary Tree (Java)

136. Single Number (Java)

412. Fizz Buzz (Java)

344. Reverse String (Java)

實作Android裡利用Intent呼叫其他程式

這次的案子想要實作從A程式呼叫B程式的其中一個class。 以下介紹如何使用Intent來進行呼叫。

搜尋所有Android內的APP package name

尋找整台機器裡面的所有App的Package名稱的方法:

實作Android導覽教學(fragment)

圖片
這次的案子是要把原有的app增加一個新手導覽教學的功能 但是不是整頁換頁的方式(像是用setContent把整頁內容改變),而是以原本存在的頁面上面蓋上一層透明的頁面,然後導覽使用者點下按鈕之後才會繼續下一步。 全部的導覽結束之後,這個透明的頁面會消失,然後恢復原本的使用介面。 大概長得像是這樣:   需要用到的主要概念有三個: 1. 使用不揮發變數(SharedPreference)來設立一個初始值為false的flag,讓教學導覽結束之後把flag調回true,以免使用者下次打開之後又開始教學導覽 2. 調整style.xml檔案,用AndroidManifest.xml指定activity後用setContent鋪上透明主題頁面 3. fragment的增加,覆蓋,以及在最後結束時關閉透明頁面 (如果你是想要跟上圖一樣只有這樣一個介面,按下螢幕之後就結束的話,可能不需要fragment) --- 1. 不揮發變數 --- 放一個flag的變數進去SharedPreference SharedPreferences sharedPreferences = getSharedPreferences("flag" , MODE_PRIVATE); //取得SharedPreferences , 丟入的參數為("名稱" , 存取權限) 關於存取權限: MODE_PRIVATE 只允許本應用程式內存取。 MODE_MULTI_PROCESS 允許多個行程同時存取,在Android 2.3(含)以前的版本都是預設開啟,但2.3之後要指定這個參數才允許多行程同時存取。 MODE_WORLD_READABLE 讓手機中的所有app都能讀取,因為風險性太高,從API 17版開始就不建議使用了。 如何改變該值: sharedPreferences.edit().putboolean("flag" , false).apply(); //存入資料,丟入的參數為(key , value) 如何取出該值: sharedPreferences.getboolean("flag" , false); //

利用Accuweather實作天氣APP

雖說這只是公司要求新人自己練習用的,但是自己從來沒寫過app(除非要說hello world也算的話),因此想自己嘗試看看做一個簡單的天氣app。 首先要先到 https://developer.accuweather.com/ 先註冊帳號之後取得專案apikey(沒有這個就不能從這個網站取資料啦) 之後會在程式裡面用到。 取當下天氣資料的字串大概是長這樣子的(抓的是日文資料,要改的話在網址後面的language=ja可以修改): location_code和是地區碼(在 這裡 可以抓該網站專用的地區碼) http://dataservice.accuweather.com/currentconditions/v1/"+location_code+"?apikey=" + apikey +"&language=ja"; 大致上的概念就是,用這個網頁過去會直接收到一個json檔案, 然後把這個json檔案拆成很多部分放進app裡面。 按下手機上面的按鈕之後就會換頁,新的頁面會顯示天氣的資訊。 activity_main.xml (主頁面) <linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <linearlayout android:layout_height="93dp" android:layout_width="match_parent" android:orientation="horizontal"> <button android:id="@+id/button_sapporo" android:layout_height="w