---
# System prepended metadata

title: Android App
tags: [Taekwondo, Android, Java]

---

Android App
===

###### tags: `Android` `Java` `Taekwondo`

## HW Submission
Repository初始化設定
```
git init
git config --list
git config user.name "John Doe"
git config user.email johndoe@example.com
git remote -v
git remote add upstream https://github.com/CooperHW/kick-counter.git
```
上傳作業
```
git add -u
git add --all
git commit -m "something update..."
git push upstream master
```

---

## Homework
### HW1
- [ ] Two players' *head*, *body*, *leg* buttons with their ```onClick``` function implementation

---

### HW2
- [ ] Design ```Player``` class by implementing ```score``` private data field and public getter and setter
- [ ] Upload to GitHub repository https://github.com/CooperHW

---

### HW3
- [ ] *Reset* button with their ```onClick``` function implementation
- [ ] Review ArrayList methods

---

### HW4
- [ ] *Undo* button with their ```onClick``` function implementation
- [ ] Add ```void delScore(int x)``` method on ```Player``` class
- [ ] Design ```Pair<T1, T2>``` generic class
- [ ] Design ```CounterStack``` class

---

### HW5
- [ ] Change icon
- [ ] Complete 2 Activities
- [ ] Complete CountDownTimer
- [ ] Complete kick-counter layout

---

## Programming Concept
### Introduction
- [Java Data Types](https://www.w3schools.com/java/java_data_types.asp)
- [Java Operators](https://www.w3schools.com/java/java_operators.asp)
- [Java If...Else](https://www.w3schools.com/JAVA/java_conditions.asp)
- [Java For Loop](https://www.w3schools.com/JAVA/java_for_loop.asp)
### Object-Oriented Programming on Java
- [OOP Concepts in Java with examples](https://raygun.com/blog/oop-concepts-java/)
```=java
public class RPG {
    
  public static void main(String[] args) {
    
    Role swordsMan = new SwordsMan();
    swordsMan.setName("Justin");
    swordsMan.setLevel(5);
    swordsMan.setBlood(60);

    Role magician = new Magician();
    magician.setName("Monica");
    magician.setLevel(2);
    magician.setBlood(100);
    
    showRole(swordsMan);
    showRole(magician);
    System.out.println("\n共有"+Role.count+"個角色");

  }
  
  public static void showRole(Role role) {
        
        System.out.printf("%s 血量:%d 等級:%d\n", role.getName(), role.getBlood(), role.getLevel());
        
        if (role instanceof Magician) {
            ((Magician)role).fight();
            ((Magician)role).cure();
        }
        if (role instanceof SwordsMan) {
            ((SwordsMan)role).fight();
        }
        
  }
  
}

class Role {
  private String name;  // data field
  private int level;
  private int blood;
  public static int count;

  public void setName(String name) { // method
    this.name = name;
  }
  public String getName() {
    return this.name;
  }
  public void setBlood(int blood) {
    this.blood = blood;
  }
  public int getBlood() {
    return this.blood;
  }

  // level getter(accessor) and setter(mutator)

  public void setLevel(int level) {
    this.level = level;
  }
  public int getLevel() {
    return this.level;
  }
  
}

class SwordsMan extends Role {
    
  public SwordsMan() {
      count++;
  }
  
  public void fight() {
    System.out.println("揮劍攻擊");
  }

}

class Magician extends Role {
  
  public Magician(){
      count++;
  }

  public void fight() {
    System.out.println("魔法攻擊");
  }

  public void cure() {
    System.out.println("魔法治療");
  }
  
}
```
* Generics
```= java
package cc.openhome;

import java.util.Arrays;

public class ArrayList<E> {
    private Object[] list;
    private int next;
   
    public ArrayList(int capacity) {
        list = new Object[capacity];
    }

    public ArrayList() {
        this(16);
    }

    public void add(E e) {
        if(next == list.length) {
            list = Arrays.copyOf(list, list.length * 2);
        }
        list[next++] = e;
    }
    
    public E get(int index) {
        return (E) list[index];
    }
    
    public int size() {
        return next;
    }
}
```

### Data Structure
![](https://i.imgur.com/cmRp1Ai.png)
* [ArrayList](https://www.w3schools.com/java/java_arraylist.asp)
* [Stack](https://www.techiedelight.com/stack-implementation-in-java/)

---

## Android App Development
- [撰寫第一支APP 計算BMI值 從1到2](http://learnexp.tw/%E3%80%90android%E3%80%91%E6%92%B0%E5%AF%AB%E7%AC%AC%E4%B8%80%E6%94%AFapp-%E8%A8%88%E7%AE%97bmi%E5%80%BC-%E5%BE%9E1%E5%88%B02-android-studio/)
- [Android切換畫面](http://aiur3908.blogspot.com/2015/02/android.html)
- [不同Activity之間的資料傳遞 (Bundle)](https://style77125tech.pixnet.net/blog/post/16330639)
- [CountDownTimer](https://developer.android.com/reference/android/os/CountDownTimer)

## Integrated Development Environment 
- [安裝Android Studio](https://ithelp.ithome.com.tw/articles/10200176)
- [我的第一個Android程式 - Hello Android!](https://ithelp.ithome.com.tw/articles/10200466)
- [匯出APK檔](https://www.itread01.com/content/1544692567.html)
  * Debuggable APK: Build -> Build APK (MyApplication\app\build\outputs\apk)
- [在 Android Studio 開設普通 Java 專案](https://medium.com/@jemmy1234/%E5%9C%A8-android-studio-%E9%96%8B%E8%A8%AD%E6%99%AE%E9%80%9A-java-%E5%B0%88%E6%A1%88-630655fc1406)
- [Android Studio中Java控制台输出中文乱码](https://blog.csdn.net/tangxl2008008/article/details/54315486)
- 變換Icon
  * Create PNG image file of size 512x512 pixels
  * In Android Studio, in project view, highlight a mipmap directory 
  * In menu, go to File>New>Image Asset
  * Click Image Button in Asset type button row
  * Click on 3 Dot Box at right of Path Box.
  * Drag image to source asset box
  * Click Next (Note: Existing launcher files will be overwritten)
  * Click Finish

---

## Backlog
### Intel VT
- [Windows 10 - How to enter BIOS configuration?](https://www.youtube.com/watch?v=HQXFd0CN4s8&feature=youtu.be)
- [如何在我的電腦上啟用虛擬化技術(VT)?](https://support.bluestacks.com/hc/zh-tw/articles/115003174386-%E5%A6%82%E4%BD%95%E5%9C%A8%E6%88%91%E7%9A%84%E9%9B%BB%E8%85%A6%E4%B8%8A%E5%95%9F%E7%94%A8%E8%99%9B%E6%93%AC%E5%8C%96%E6%8A%80%E8%A1%93-VT-)
### XML (Extensible Markup Language)
![](https://i.imgur.com/NnMRSuc.png)
- [XML namespaces](https://www.w3schools.com/xml/xml_namespaces.asp)
- [Android的layout.xml檔中的xmlns是什麼呢？](https://medium.com/@z125617/android%E7%9A%84layout-xml%E6%AA%94%E4%B8%AD%E7%9A%84xmlns%E6%98%AF%E4%BB%80%E9%BA%BC%E5%91%A2-de8d3adf0771)