Android APP開發學習筆記

手機如何分別不同的APP:修改專案的套件名稱和應用程式ID

Part1-Refactor/Rename
1.在程式的路徑上(tw.com.XX.XXX)按Refactor/Rename
2.Rename package
3.輸入要修改的新套件名稱,點擊Refactor
4.Load File System Changes
Part2-File/Project Structure
1.點選Modules中的app
2.切換到Flavors //可建立多個Flavor,產生多個不同的APK(免費與付費版)
3.修改Application Id

宣告變數

// Declare a TextView variable called mToysListTextView                       private TextView mToysListTextView;

在Java程式中對應Layout

mToysListTextView = (TextView) findViewById(R.id.tv_toy_names);

添加id至Layout中

android:id="@+id/tv_toy_names"

onCreate()

執行APP後,MainActivity會呼叫onCreate(),接著執行裡面的程式

setContentView()

將Activity佈局檔(視窗畫面)載入到程式中// setContentView(R.layout.activity_main)

findViewById()

//findViewById()必須擺在setContentView()後面
findViewById(R.id.txv) //找出佈局檔中的txv物件

R.X.X.X(JAVA中使用)

R.layout.activity_main  //取得layout中的activity_main.xml佈局檔
R.string.app_name //取得strings.xml中的app_name字串內容

@id/資源名稱(XML中使用)

在XML中存取資源
// textView的id為txv,用"@id/txv"來參照
"@id/txv" 為「已有該原件,只做參照」
"@+id/txv" 為「已存在則參照,若不存在則建立之」

RelativeLayout

用相對位置來佈局

LinearLayout

由上到下或左到右依序佈局

ConstraintLayout

約束佈局,使用Design圖形模式的方式去控制元件在螢幕上的位置

TableLayout

表格佈局(設定第幾行、第幾列)

TextView

文字標籤或文字方塊

EditText

getText():取得使用者輸入的文字
setText():設定TextView顯示的文字

View元件(可見)

例如TextView, Button, EditText

ViewGroup(不可見)

可放入View元件或其他ViewGroup佈局

match_parent

與母元件同等寬度(高度)

wrap_content

隨內容多寡自動調整寬度(高度)

gravity屬性

對齊方式

OnClickListener

宣告要成為"按一下"事件的監聽物件

this

代表"目前的物件"

onLongClick()

處理"長按"事件

onTouch()

觸控事件的處理

getSystemService(Context.VIBRATOR_SERVICE)

//取得震動物件 getSystemService(Context.VIBRATOR_SERVICE)
//振動與停止
vb.vibrate(5000);
vb.cancel()

RadioButton

將RadioButton放在RadioGroup裡面,產生可以多選一的單選紐

getCheckedRadioButtonId()

讀取單選鈕狀態

CheckBox

可複選的核取方塊

isChecked()

檢查是否被選取,傳回true或false

ImageView

顯示圖片

Spinner

選單元件

getSelectedItemPosition()

讀取Spinner元件的選取項目

OnItemSelected()

監聽Spinner元件的選擇事件

ListView()

以條列的方式來顯事資料

ArrayAdapter

Spinner與資料的橋梁

setAdapter()

將ArrayAdapter和Spinner綁在一起

Toast(離開APP時,訊息還會顯示)

顯示即時訊息
//Toast.makeText(this,"Hello",Toast.LENGTH_SHORT).show();

Snackbar(離開APP時,訊息不會顯示)

顯示即時訊息
//Snackbar.make(view,"Hello",Snackbar.LENGTH_SHORT).show();

Alert

交談視窗

DatePickerDialog&TimePickerDialog

挑選日期與時間

Intent

啟動程式中的Activity明示Intent(Explicit Intent):啟動本身程式的Activity
暗示Intent(Implicit Intent):啟動其他程式的Activity

Uri

Intent的資料
例如:
"http://abc.com.tw"
"tel:800"
"mailto:test@abc.com.tw"
"sms:0912-345678"

使用相機

Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(it,100);

播放音樂與影片

//選取音樂
Intent it = new Intent(Intent.ACTION_GET_CONTENT);
it.setType("audio/*");
startActivityForResult(it,100);
//選取影片
Intent it = new Intent(Intent.ACTION_GET_CONTENT);
it.setType("video/*");
startActivityForResult(it,100);
可依需求將("audio/*")改成("audio/mp3")或("image/*jpeg")......等

VideoView

播放影片

WebView

顯示網頁使用方式:
1.佈局加入WebView
2.程式呼叫loadURL()載入指定網頁
3.在AndroidManifest.xml取得存取網際網路的權限
//無JavaScript和頁面縮放的功能

WebSettings, WebViewClient, WebChromeClient

WebSettings:啟用網頁縮放和JavaScript
WebViewClient:處理開啟超連結
WebChromeClient:建立網頁載入進度介面

onBackPressed()

回到上一頁的功能@Override
public void onBackPressed() {
if(wv.canGoBack()){
wv.goBack();
return;
}
super.onBackPressed();
}

SharedPreferences

儲存資料(存到XML檔案格示中)//清除APP的SharedPreferences
設定/應用程式 --> 清除資料

SQLite

嵌入式資料庫引擎(Database)

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store