顯示具有 Android Studio 標籤的文章。 顯示所有文章
顯示具有 Android Studio 標籤的文章。 顯示所有文章

2021年7月27日 星期二

[Android Studio] 處理 Invalid Gradle JDK configuration found的問題

有時候會需要從別處取得專案,這時候Android Studio可能會產生以下的錯誤

Invalid Gradle JDK configuration found.

這時候你只需要關閉專案,並且開啟專案資料夾,將以下的檔案刪除:

.gradle

.idea

這兩個檔案必須由你自己的電腦產生,因此你要刪除它們,接著重新開啟專案,

讓Android Studio自動產生對應的檔案,應該就可以處理此問題了。

參考資料

Invalid JDK configuration found, while importing a project via Gradle

2015年12月9日 星期三

[Android] 註解的推薦寫法 - Android Studio

註解很重要人人都知道,但是依照特殊的格式來寫,可以讓你的程式更好讀。

在Android Studio當中,當你選擇某個涵式時,按下快捷鍵可以閱讀此方法的註解。

MAC : fn + F1

Windows: CTRL + Q

你就會看到這樣的畫面





















我們也想要我們的涵式也能用這種格式顯示,該怎麼做呢?

其實滿簡單的,大部分的人可能只需要用到這三個參數

@param - 說明參數的內容

@return - 說明回傳的內容

@see - 推薦看別的東西

在這邊示範一下簡單的寫法



這樣顯示出來的效果會像這樣



這樣一來你的程式即使在其他類別,也可以很簡單的看到註解,也可以比較方便給人家使用。

2015年11月24日 星期二

[Android] Android開發教學 - 開啟其它的Activity

正常來說,一個App會包含多個Activity,也就是有許多的畫面,

這章節會教導如何切換Activity。

首先當然是加入其他的Activity,在Java資料夾底下點選右鍵,並新增新的Activity


這裡我們選擇加入一個Empty Activity,此時,Android Studio自動幫我們做了三件事

1.在AndroidManifest.xml定義了新的Activity

2.在Java資料夾中,增加了Main2Activity.java

3.在layout資料夾中,增加了activity_main2.xml

若是你使用的IDE沒有做這三件事,就必須補完這三件事,此外,若是你想要刪除這頁

你就必須把這三件事都做完

1.將AndroidManifest.xml裡面定義的Activity移除

2.刪除Java資料夾中的頁面

3.刪除layout資料夾中的xml

接著我們在第一頁加入一個Button,並且實作onClick界面。

當按下這個Button之時,會切換到第二頁。

接著要來介紹一下一個新的物件。

Intent,這是一個Android相當重要的物件,許多地方都會用到,而其中一個功能就是開啟另一個Activity。

接著你可以將你的程式碼打成以下的樣子


將Intent物件初始化,並使用setClass方法來設定你要前往的Activity。

要丟入兩個參數,假設你要從A頁到B頁。

就必須輸入 intent.setClass(A.this , B.class);

然而,你可能會在某些地方的範例看到直接在前面輸入this,可是你也這樣輸入卻有錯誤訊息跳出。

這個原因是因為我們寫在new View.OnClickListener()之中,在這裡面寫的this是指這個View.OnClickListener物件,而不是這整個MainActivity的物件,雖然看起來是在同一頁寫的,但是本質上不太一樣。

如果你還是想要寫this就好,可以將這換頁的事件整個搬出去寫,然後當按鈕按下時在去呼叫即可,此時你的程式碼可能會像這樣。


接著,你可能會想要從第一頁帶一些資料到第二頁去。

如果只是一些,可以使用putExtra來達成。

是使用Key - Value形式來儲存的。

如果對這種儲存方式不熟悉的話,可以看一下以下的例子。

intent.putExtra("Name" , "Tom");

前者是Key 後者是 Value,

假如你想取得Tom這個值的話,你就必須要使用Name這個Key來取得。

pueExtra可以傳送大部分的物件給下一頁,舉例來說。


這個例子我們儲存了Name Year到下一頁,那麼,下一頁該怎麼取得呢?

你可以這樣取得。

使用getIntent()可以拿到上一頁傳過來的Intent,並透過get來取得上一頁傳過來的值,

有些值必須填入預設值,當上一頁沒有傳值過來的話,必須要有預設值。

此外,也可以將這些值全部都放入Bundle之中,之後你的程式可以改為以下。


而取值也必須改成這樣。


並沒有強制說要用哪種形式比較好,可以根據個人喜好來決定。

根據此章節你應該能稍微了解Activity切換與傳值。

2015年7月7日 星期二

[Android] Android Studio 加入廣告的方法 - AdMob

這邊會教學如何在你的App之中加入廣告,首先你必須有AdMob的帳號。

你可以到這邊申請帳號 AdMob ,登入後可以選擇透過新應用程式盈利

手動新增應用程式,輸入並選擇應用程式種類。





















接著選擇廣告的格式,有分橫幅廣告或插頁式廣告,橫幅就是一條廣告,而插頁式是全版廣告,這邊先選擇橫幅廣告。

可以設定重新整理的頻率,以及這則廣告的命名。
























按下確認後,你會看到你的廣告單元編號,像是 ca-app-pub-一串數字。

這串編號就是代表你這個廣告的代碼,只要透過這個代碼就能去跟AdMob要廣告,

而使用者點選或看到這則廣告,你就有收益。

此時帳戶的設定差不多完成了,試著把這個廣告加入到你的App之中。

首先先下載Google Repository,點選SDK Manager,

安裝Extras裡面的Google Repository















接著選擇Gradle Scripts裡面的build.gradle(app)








在dependencies加入以下這行

compile 'com.google.android.gms:play-services:6.+'







看到黃色底可能會覺得有些不安,不過沒關係可以不用理他。

AndroidManifest.xml加入以下三個東西

1. 存取網路的權限,因為廣告需要用到網路
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2.Android 可藉此瞭解應用程式預期要用的服務版本。
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

3.有人按下橫幅廣告或出現插頁廣告時,SDK 才會使用這個活動,而且與其他活動一樣,必須先在資訊清單中宣告後才能顯示。
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" />

這些程式碼要放哪可以參考這張圖

這時候有些紅字該怎麼解決,你只需要按Run即可,因為我們剛才有設定Gradle,他會自動幫我們導入需要的東西,只是可能需要一些時間。

當紅字去除時,就可以加入廣告了。

首先先到Strings.xml加入廣告的key,也就是上面網頁申請的廣告代碼。

若是沒有你也可以先使用Google提供的範例Key

ca-app-pub-3940256099942544/6300978111

像是這個樣子


接著到你要顯示的頁面加入這個xml語法,事實上它是一個custom view。



此時你會看到ads那部分是紅字,你可以像是在寫程式一樣使用快捷鍵讓系統幫你自動產生需要的程式碼(alt + enter),或者你手動加入這行語法。

xmlns:ads="http://schemas.android.com/apk/res-auto"















接著載入廣告,你只需要很簡單的寫這幾行即可。

如果都沒有問題,你應該能夠看到真的廣告,但是他有規定不能在測試的時候用真的廣告,否則可能會被封鎖帳號。

你可以看一下你的LogCat,搜尋add,他會告訴你請加入測試設備代碼。





意思是,把你這台設備加入到測試之中,這樣只會看到測試的廣告,不會違反條例。

把上面的程式碼稍微修改一下,會變成這個樣子。



這時候你看到的廣告應該會是這個樣子








一般看到的廣告都是等同螢幕寬,那要怎設定呢,你只需要把上面的XML程式碼之中的,

ads:adSize稍作修改即可,改成SMART_BANNER,他會隨著螢幕大小而作改變,而唯一不變的是會填滿寬。

改完後,卻發現廣告跳不出來了,而又跑出Not enough space to show ad.的錯誤代碼,

是因為他必須等同螢幕寬,但是RelativeLayout一開始可能會自動幫你設定縮排,也就是padding,我們把左右縮排都去掉,就可以了。

去掉這兩個














此時,這樣的廣告效果,看起來是不是不錯呢。











































還有其他的橫幅寬高,這裏就不多作介紹,可以參考Google的說明



2015年6月15日 星期一

[Android] 自動產生getter與setter的程式碼 - Android Studio

有些時候我們自己創建一個類別時,有許多屬性都要實作getter及setter,

在Android Studio之中,有可以快速幫你打好程式碼的方法。

除了省去輸入的麻煩外,也可以降低輸入錯誤的機率。


假如我們創一個類別,有四個屬性要實作getter及setter。












你可以利用快捷鍵來完成

Windows :  Alt + Insert

MAC:  Command + N

選擇Getter and Setter






















選擇你要實作哪些,假設都選。



























最後按下OK,Android Studio就會自動幫你產生程式碼。



2015年5月24日 星期日

[Android] 利用註解來整理程式碼(region) - Android Studio

很多狀況下你的程式碼可能會因為要implements一大堆東西搞的又臭又長,

這時候你就可以利用region來區分哪些區塊是哪部分的程式碼,這樣看起來比較乾淨。

拿一個基本的Service Class來說明。























光一個Service就有一堆東西要實作,為了在搞混之前,最好先把屬於Service的程式碼都放在一起,我們在他們的前後端都使用註解來區分區域。

格式如下:

//region 說明文字

你的程式碼

//endregion

這麼一來你就劃分出屬於Service的區域了,你可以將它收起來或展開。

收起來






展開
























除了多了可以收起來的功能外,也能讓維護更加輕鬆。