You are on page 1of 322

Lp trnh Android

Thc mc !?

Nhp mn lp trnh Android

Lp trnh Android (1)

Lp trnh Android (2)

Mi trng lp trnh v pht trin ng dng

Cu trc ng dng Android c bn (1)

Cu trc ng dng Android c bn (2)

Mi lin h gia Activity v Layout

S dng Log v Toast

o
o

Activity Life Cycle

Activity Stack

Life Cycle States

Life Cycle States

Visible Lifetime & Foreground Lifetime

Thay i mt s thng tin ca ng dng

Ti liu Lp trnh Android - ZendVN

Trang 1

Hng dn Download v ci t Genymotion


A. Genymotion l g ?

Genymotion l phn mm gi lp h iu hnh Android, phn mm ny gip chng ta tri nghim cc ng


dng hoc game Android trn my tnh PC, ng thi Genymotion cng cho php chng ta ci t v s
dng cc ng dng t Google Play mt cch nhanh chng v d dng.

Ngoi ra vi vic inh dang ro tng dong may Android v nhiu chc nng tin ich khc, Genymotion
ngy cng c s dng rng ri bi nhng nh phat trin ng dng chuyn nghip.

Trang ch https://www.genymotion.com

B. ng k ti khon ti Genymotion
Tuy Genymotion l mt phn mm min ph nhng download c phn mm ny th chng ta phi c mt ti
khon ti Genymotion. Nh vy cng vic u tin th chng ta s tin hnh ng k mt ti khon ti Genymotion

Bc 01: Truy cp vo trang ch ca Genymotion tai ia ch https://www.genymotion.com

Bc 02: Truy cp chc nng Create Account thng qua menu Sign in

Ti liu Lp trnh Android - ZendVN

Trang 2

Bc 03: in y thng tin vo form ng k


o Lu ia ch email y chng ta phi cung cp chnh xc, bi v email ny c dng kch
hoat ti khon v thc hin cc giao dich khc vi Genymotion

o Thng bao ng k thnh cng s hin thi nh hnh v bn di

Ti liu Lp trnh Android - ZendVN

Trang 3

Bc 04: Kch hot ti khon


o Truy cp vo hp mail va ng k Bc 3 kim tra, Genymotion s gi mt email km
mt lin kt chng ta kch hoat ti khon. Chng ta click vo lin kt Click here tin hnh
kch hoat ti khon va ng k

C. Download phn mm

Bc 01: Truy cp trang download ca Genymotion https://www.genymotion.com/#!/download v chn


vo lin kt Get Genymotion (dung lng khong 126.02MB v inh km lun VirtualBox)

Bc 02: in thng tin ti khon va ng k Mc B ng nhp v download phn mm

Ti liu Lp trnh Android - ZendVN

Trang 4

D. Ci t phn mm
Sau khi download thnh cng phn mm Genymotion, chng ta s c mt tp tin vi tn genymotion-2.5.0vbox.exe vi dung lng gn 130mb (Tn ca tp tin c th thay i ty vo phin bn Genymotion m chng
ta download c v my)

Double click vo tp tin (hoc Right Click + Open hoc Right Click + Run as administrator) tin hnh ci
t. Chng ta nn gi tri mc inh l ngn ng English, sau nhn OK

Tip tc click Next

Ti liu Lp trnh Android - ZendVN

Trang 5

Thip lp th mc cha Genymotion khi ci t, y chng ta s gi tri mc inh C:\Program


Files\Genymobile\Genymotion. Tip tc Click Next

Tip tc click Next tao icon ngoi Desktop

Ti liu Lp trnh Android - ZendVN

Click Install bt u qua trnh ci t

Qua trnh ci t ang din ra

Trang 6

Ti liu Lp trnh Android - ZendVN

Trang 7

Trong qua trnh ci t, Genymotion s ci t thm VirtualBox, y l phn mm c tch hp sn trong


file ci t, chng ta bt buc phi ci t phn mm ny s dng tt cc chc nng ca Genymotion.

Gi cc gi tri mc inh v tip tc click Next

Ti liu Lp trnh Android - ZendVN

Trang 8

Qua trnh ci t Genymotion thnh cng.

Tip tc nhn Finish khi ng Genymotion. Sau khi ci t thnh cng chng ta s thy mn hnh desktop
xut hin 3 icon sau

Ti liu Lp trnh Android - ZendVN

Trang 1

Hng dn Download v ci t Android Studio


A. Android Studio l g ?

Android Studio l mt phn mm min ph (IDE) c pht trin bi Google, gip chng ta pht trin cc
ng dng Android mt cch nhanh chng v hiu qu nht.

Trang ch https://developer.android.com/sdk/index.html

B. Download phn mm

Bc 01: Truy cp trang download ca phn mm Android Studio ti a ch


https://developer.android.com/sdk/index.html v chn vo lin kt Download Android Studio For

Windows

Ti liu Lp trnh Android - ZendVN

Trang 2

Bc 02: c cc in khon v check vo ty chn I have read and conditions, tip tc click vo
Download Android Studio For Windows

C. Ci t phn mm
Lu : ci t c phn mm Android Studio yu cu my tnh ci t JDK, v phn hng dn ci t
JDK chng ta c hng dn trong kha hc Lp trnh Java nn ti s khng trnh by li, nu bn no
cha ci t c JDK c th tham kho video sau https://www.youtube.com/watch?v=e6x1NWuVh-4
Sau khi download thnh cng phn mm Android Studio, chng ta s c tp tin android-studio-bundle141.1980579-windows.exe vi dung lng gn 910mb (Tn ca tp tin c th thay i ty vo phin bn phn
mm m chng ta download c v my)

Ti liu Lp trnh Android - ZendVN

Trang 3

Double click vo tp tin (hoc Right Click + Open hoc Right Click + Run as administrator) tin hnh ci
t. Chng ta nn gi tr mc nh l ngn ng English, sau nhn OK v hp thoi Welcome to Setup
Android Studio s xut hin:

Tip tc click Next

Ti liu Lp trnh Android - ZendVN

Trang 4

Chng ta nn gi nguyn cc ty chn ny sau nhn Next tip tc. Hp loi thng bo cc iu khon v
mt s lu khi s dng Android Studio xut hin, chng ta tip tc click I Agree

Phn cu hnh yu cu ci t chng ta nn gi tr mc nh, sau nhn Next

Ti liu Lp trnh Android - ZendVN

Click Install bt u qu trnh ci t

Qu trnh ci t ang din ra

Qu trnh ci t Android Studio thnh cng

Trang 5

Ti liu Lp trnh Android - ZendVN

Trang 6

Tip tc click Finish khi ng Android Studio. ln khi ng u tin, mt hp thoi import bn Android
Studio c s xut hin, v y l ln ci t v s dng Android Studio u tin nn chng ta s chn nh hnh
di.

Ti liu Lp trnh Android - ZendVN

Trang 7

ln u tin ny, chngta s phi update mt vi th cho qu trnh lm vic sau ny. Vui lng ch i cho n
khi hon tt.

Qu trnh update thnh cng

Ti liu Lp trnh Android - ZendVN

Chn giao din lm vic vi Android Studio, y ti chn theme Intellij, sau tip tc click Next

Mn hnh khi ng xut hin chng t qu trnh ci t thnh cng

Trang 8

Ti liu Lp trnh Android - ZendVN

Trang 1

Hng dn to Project trong Android Studio

Khi ng phn mm Android Studio, ti giao din ca mn hnh Welcome chng ta tip tc chn Start a
new Android Studio project tin hnh to mi mt Project

Ca s Cu hnh Project s hin th nh hnh bn di, chng ta lu cc gi tr sau:

Ti liu Lp trnh Android - ZendVN

Trang 2

Application name: tn ca ng dng

Company Domain: tn min ca cng ty hoc t chc bn ang cng tc (gi tr ny s c t ng thm vo
cho phn Package name pha di)

Package name: mi ng dng nn c Package name phn bit v duy nht (Quy tt t tn tng t nh cch
t tn cc package trong JAVA)

Project location: la chn ni lu tr cc m ngun ca ng dng. Chng ta nn lu v ng dn ny v y


s l ni cha tt c cc m ngun lin quan n ng dng. Trong trng hp mun thay i th mc ny th
bn ch cn click vo Button v chn vo folder m bn mun cha m ngun

Sau khi in y thng tin i vi phn cu hnh Project, chng ta tip tc click vo nt Next

La chn loi thit b xy dng ng dng: y chng ta xy dng ng dng cho cc thit b di ng do
chng ta s chn vo ty chn Phone and Tablet

La chn Minimum SDK: Chn gii hn API thp nht m ng dng c th ci t trn API

Sau khi chn y cc thng tin trn chng ta click Next tip tc

Ti liu Lp trnh Android - ZendVN

Trang 3

Ca s la chn cc loi giao din s xut hin, y chng ta ch mi chp chng tm hiu v Lp trnh
Android do chng ta s chn vo loi giao din n gin nht Blank Activity, v tip tc click Next

ca s mi chng ta s tin hnh to mi mt Activity cho ng dng (khi nim Activity tm thi chng
ta xem nh l mt ca s giao din), cc thng tin ny chng ta s mc nh v tip tc click vo Finish
hon thnh vic to ra mt project trong Android Studio

Ti liu Lp trnh Android - ZendVN

Trang 1

Ci t v cu hnh Plugin Genymotion trong Android Studio


A. Ci t Plugin Genymotion trong Android Studio

Khi ng phn mm Android Studio

Vo menu File Setting (hoc nhn t hp phm Ctrl + Alt + S)

Tip tc chn menu Plugins, bn s thy mt ca s giao din xut hin nh hnh bn di

Tip tc chn vo button Browse repositories tm kim cc plugins. Sau khi click vo button
ny mt ca s mi s xut hin

Ti liu Lp trnh Android - ZendVN

Trang 2

Ti ca s ny chng ta nhp vo tm kim t kha Genymotion tm kim plugin Genymotion.

Plugin Genymotion s xut hin trong khung kt qu, chng ta ch vic click chn vo n v tip tc
click Install plugin bt u qu trnh ci t

Tip tc click Yes xc nh li chng ta mun download v ci t plugin Genymotion

Ti liu Lp trnh Android - ZendVN

Trang 3

Sau khi ci t xong Plugin Genymotion, chng ta click vo Restart Android Studio khi ng
li phn mm Android Studio

Sau khi khi ng li Android Studio, chng ta thy icon ca plugin Genymotion s xut hin trn thanh
Toolbar, iu ny chng t Plugin Genymotion c ci t thnh cng

Ti liu Lp trnh Android - ZendVN

Trang 4

B. Cu hnh Plugin Genymotion trong Android Studio

Click vo icon ca plugin Genymotion trn thanh toolbar, mt ca s giao din s xut hin nh sau

Tip tc click vo du chn folder cha Genymotion ci t v nhn OK

Ti liu Lp trnh Android - ZendVN

Trang 5

Lc ny ng dn n folder ci t Genymotion xut hin, chng ta tip tc click OK hon tt


vic cu hnh plugin

By gi chng ta s chn li vo icon ca plugin Genymotion trn thanh Toolbar, mt ca s mi xut


hin chng t chng ta cu hnh thnh cng Genymotion v c th bt u s dng n test cc ng
dng

Xy dng b cc giao din vi Android Layout

Android Layout

AbsoluteLayout

FrameLayout

LinearLayout

wrap_content vs match_parent

gravity vs layout_gravity

weightSum & layout_weight (1)

weightSum & layout_weight (2)

weightSum & layout_weight (3)

weightSum & layout_weight (4)

Thc hnh LinearLayout (1)

Thc hnh LinearLayout (2)

Thc hnh LinearLayout (3)

Margin vs Padding

RelativeLayout
A
B

RelativeLayout V tr trong mi quan h cha con

layout_alignParentLeft

layout_alignParentTop

layout_alignParentRight

layout_alignParentBottom

A
layout_centerHorizontal

layout_centerVertical

layout_centerInParent

Andoid

layout_alignBaseline

RelativeLayout V tr trong mi quan h anh em

layout_above

layout_below

layout_toLeftOf

layout_toRightOf

layout_alignLeft

layout_alignRight

layout_alignTop

layout_alignBottom

RelativeLayout Exercise (1)

RelativeLayout Exercise (2)

TableLayout

TableLayout - stretchColumns

<TableLayout
android:stretchColumns=1">

<TableLayout
android:stretchColumns=0,2">

<TableLayout
android:stretchColumns ="*">

TableLayout layout_span & layout_column

android:layout_column="2">

android:layout_span=2">

TableLayout Exercise

Android Screen Orientation

Chng 3: Android Form Widgets

Chng 3: Android Form Widgets

TextView

EditText

Button

ToggleButton

Chng 3: Android Form Widgets

S dng Android Resource c bn

Cc dng Android Resource c bn

T hn nh cho cu hnh

MCC and MNC (mobile country code mobile

Language and region (en, fr, vi)

(notouch khng cm ng,

stylus cm ng bt, finger cm ng bng tay)

netword code) (mcc452, mcc452-mnc04)

Touchscreen type

Keyboard

availability

(keysexposed,

keyshidden, keyssoft)

Screen size

(small < 3.2 inch, normal 3.2 -> 3.7 inch, largre

3.7 -> 7 inch, xlarge 7 -> 11 inch)

Primary text input method

(nokeys cm ng,

qwerty bn phm cm ng, 12key bn phm s)

Screen aspect (long 16:9, notlong 4:3)

Screen Orientation (port ng, land ngang)

Night mode (night 18h -> 6h, notnight)

Screen pixel density

(ldpi 240x320, mdpi 480x640, hdpi

480x800, xhdpi 540x960 or 720x1280, nodpi, Xxhdpi)

(navexposed

phm iu hng trn mn hnh, navhidden phm


iu hng n)

Dock mode (desk bn, car trn xe)

Navigation key availability

Primary non-touch navigation method


(nonav, dpad, trackball, wheel)

Platform version (API level) (v3, v4, v7)

Quy tt t tn th mc resource vi t hn nh

Truy cp ti nguyn

String Resources

Color Resources

Dimension Resources

Chng 3: Android Form Widgets

Event Listeners

Chng 3: Android Form Widgets

Quotations

Chng 3: Android Form Widgets

Android's virtual keyboard

Chng 3: Android Form Widgets

Caculator

Chng 3: Android Form Widgets

BMI

Chng 3: Android Form Widgets

FindMe

Chng 3: Android Form Widgets

ImageView v cc thao tc x l

Chng 3: Android Form Widgets

ng dng ImageView vi game Card

Chng 3: Android Form Widgets

Xy dng app Random Number vi Checkbox v


RadioButton

Menu ContextMenu DiaLog

Menu ContextMenu DiaLog

Thit lp v s dng Menu

Menu ContextMenu DiaLog

Thit lp v s dng Popup Menu

Menu ContextMenu DiaLog

Lm vic vi Context Menu

Menu ContextMenu DiaLog

S dng Dialog

Menu ContextMenu DiaLog

Custom giao din cho Dialog

Menu ContextMenu DiaLog

DatePickerDialog

TimePickerDialog

S dng Intent trong Android

S dng Intent trong Android

Nhng iu cn bit v Intent

startActivity()
Intent myIntent = new Intent(MainActivity.this,
ChildActivity.class);
startActivity(myIntent);

open

back

S dng Intent trong Android

Gi thng ip km d liu vi Intent (1)


Intent myIntent = new Intent(FirstActivity.this,
SecondActivity.class);
myIntent.putExtra("param_1", "Android");
myIntent.putExtra("param_2", 123);
startActivity(myIntent);
open
Send data
back

Gi thng ip km d liu vi Intent (2)

open
Send data
back

Gi thng ip km d liu vi Intent (3)


Bundle bundle

= new Bundle();

myIntent.putExtra("MyData", bundle);
startActivity(myIntent);

open

Send data
back

S dng Intent trong Android

Implicitly Intent vs Explicitly Intent (1)

Implicitly Intent vs Explicitly Intent (2)

open

back

S dng Intent trong Android

startActivityForResult()

S dng Intent trong Android

Intent filter

S dng Intent trong Android

Xy dng ng dng Game Your Memory

Drawable Resource v xy dng giao din

Drawable Resource v xy dng giao din

Drawable Resource (1)

Drawable Resource (2)

Drawable Resource v xy dng giao din

Layer List

Drawable Resource v xy dng giao din

Shape Drawable

Tnh hung xy dng giao din

Drawable Resource v xy dng giao din

Color State List

State List Drawable (1)

State List Drawable (2)

Drawable Resource v xy dng giao din

Level List Drawable (1)

<?xml version="1.0" encoding="utf-8"?>


<level-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_one"
android:minLevel="0"
android:maxLevel="2"/>
</level-list>

Level List Drawable (2)

Level List Drawable (2)

Drawable Resource v xy dng giao din

Transition Drawable

Drawable Resource v xy dng giao din

Clip Drawable

Drawable Resource v xy dng giao din

ProgressBar (1)

ProgressBar (2)

Drawable Resource v xy dng giao din

Seekbar

Drawable Resource v xy dng giao din

RatingBar

Drawable Resource v xy dng giao din

Xy dng chc nng a ngn ng


Ting Vit

Ting Anh

Cc dng Android Resource c bn

Drawable Resource v xy dng giao din

S dng style trong nh ngha giao din

Drawable Resource v xy dng giao din

Tng hp kin thc Drawable Resource (1)

Tng hp kin thc Drawable


Resource (2)

Tng hp kin thc Drawable Resource (3)

Tng hp kin thc Drawable Resource (4)

Tng hp kin thc Drawable Resource (5)

Tng hp kin thc Drawable Resource (6)

Android Form Widgets Advanced

Autocomplete (1)

Autocomplete (2)

Autocomplete (3)

Android, Java, IOS, Java Spring

Android, Java, IOS, Java Spring

Autocomplete (4)

Exercise Autocomplete (1)

Exercise Autocomplete (2)

Android Form Widgets Advanced

S dng ListView (1)

S dng ListView (2)

String Array

S dng ListView (3)

S dng ListView (3)

S dng ListView (4)

S dng ListView (5)

Android Form Widgets Advanced

Xy dng App List Players

Xy dng App List Films


List Films

Edit Film

Supergirl

Supergirl
(N siu nhn)

Supergirl
(N siu nhn)

List Films

Supergirl

(N siu nhn)

Supergirl

N siu nhn

(N siu nhn)

Score
Ok
Total: 12

Cancel
Total: 12

Android Form Widgets Advanced

ScrollView

Android Form Widgets Advanced

S dng Spinner (1)

S dng Spinner (2)

S dng Spinner (3)

Android Form Widgets Advanced

S dng Spinner (4) - Kt hp Spinner v ListView

S dng Spinner (5)

Android Form Widgets Advanced

S dng GridView (1)

Exercise GridView (1)

Exercise GridView (2)

Back

Exercise GridView (3)

Android Form Widgets Advanced

S dng View Flipper (1)

S dng ViewFlipper (2)

Android Form Widgets Advanced

S dng TabHost
TabSpec

Tab 1
TabHost

Tab 2

Tab 3

This is Tab 1
(Resoure, Intent, View, )

TabWidget
(id=tabs)
FrameLayout

(id=tabcontent)

S dng
TabHost (2)

Android Form Widgets Advanced

S dng AppBar (1)

S dng AppBar (2)

S dng AppBar (3)

Android Form Widgets Advanced

Truy xut cc ng dng c ci t

Truy xut cc Contact trong danh b

Xy dng ng dng TodoList

TodoList Cc chc nng cn thc hin (1)

TodoList Cc chc nng cn thc hin (2)

TodoList Xem thng tin chi tit cng vic

TodoList Tm kim cng vic

TodoList Multi Delete

TodoList Add Task

TodoList Edit Task

S dng Animation Resources trong Android

#01 - Animation Resource

#02 - Property Animation

#03 - Tween Animation

#03 - Alpha Animation

#04 - Scale Animation

#05 - Rotate Animation

#06 - Translate Animation (1)

#06 - Translate Animation (2)

#07 - Kt hp cc Animation

#08 So snh Animation v Animator

#09 - Frame Animation

#10 - Interpolators v Custom Interpolators

#11 - p dng Animation - Login

Xy dng giao din vi Fragment

#1 Fragment (1)

#1 Fragment (2)

#1 Create Fragment - XML

#1 Create Fragment - Java

#1 Fragment replace

#2 Fragment Lifecycle (1)

#2 Fragment Lifecycle (2)

#3 Fragment Orientation

#4 Fragment Communicator (1)

#4 Fragment Communicator (2)

#4 Fragment Communicator (3)

#5 Fragment onSaveInstanceState

#6 Fragment Back Stack

#7 S dng List Fragment

#8 S dng DialogFragment

#9 Tnh hung x l giao din vi Fragment (1)

#9 Tnh hung x l giao din vi Fragment (2)

Thao tc vi tp tin trong Android

#1 X l tp tin trong Android (1)

#1 X l tp tin trong Android (2)

#1 X l tp tin trong Android (3)

#1 X l tp tin trong Android (4)

#2 Internal Storge (1)

#2 Internal Storge (2)

#3 Thao tc vi cc tp tin Cache

#4 External Storage

#5 SharedPreferences

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>


<map>
<int name="cost" value="12" />
<string name="name">Android</string>
</map>

#6 Xy dng ng dng

S dng ViewPager

#1 ViewPager vi ng dng Slider

#2 ViewPager kt hp Fragment

#4 ViewPager kt hp TabHost

#5 Custom hiu ng vi PageTransformer

C s d liu SQLite trong Android

#1 SQLite v cng c qun l (1)

#1 SQLite v cng c qun l (2)

#2 SQLite CRUD

#3 Xy dng ng dng qun l vi SQLite

#4 Master selection trong SQLite

#5 S dng Content Provider (1)

#5 S dng Content Provider (2)

#6 Xy dng Content Provider

X l a lung v khai thc d liu Internet

#1 Multi thread (1)

#1 Multi thread (2)

#1 S dng post v postDelayed trong Handler (1)

#1 S dng post v postDelayed trong Handler (2)

#2 Xy dng ProgressBar vi Handler

#3 Xy dng B m ngc vi Handler

#4 X l a lung vi AsyncTask (1)

#4 X l a lung vi AsyncTask (2)

#4 X l a lung vi AsyncTask (3)

#5 Download hnh nh t Internet

#6 c v s dng Regular Expression bc tch ni


dung t Internet

#7 S dng BroadCast Receiver

Thao tc vi XML v Json trong Android

#1 Thao tc vi tp tin XML

#2 Thao tc vi XmlPullParser (01)

#2 Thao tc vi XmlPullParser (02)

#3 XmlPullParser c v x l RSS (vnexpress.net)

#3 XmlPullParser c v x l RSS (vietnamnet)

#4 Json v phn tch chui Json (1)

#4 Json v phn tch chui Json (3)

#4 Json v phn tch chui Json (3)

#5 Khai thc JSON t Internet

#6 S dng class Gson ton tp

Bonus Tm hiu class v th vin m rng

#1 Android Swipe Down to Refresh ListView

#2 Fragment Navigation Drawer

#3 Google Search API


http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=[q]&key=[key]&c
x=[account]&rsz=large&userip=[userip]&start=[start]

q: gi tr cn tm kim
rsz: s lng kt qu mun tr v
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=android%20tutorial
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=android%20tutorial&r

sz=large

Thi quen tt cho Lp trnh Vin

#1 Ghi ch trong m ngun

Bo tr vin thn mn!


on code ny c vit bi Cha, n
tr v kt qu rt tuyt vi nhng b
no b nh ca ti khng th hiu
c n.
Chc bn may mn.

Date created
Author
Description
Param 1: int description
Param 2: string description

#2 S dng ting Anh khi Code v Research (1)

#2 S dng ting Anh khi Code v Research (2)

Java

Input: luu truong hai lan


Output: LUU TRUONG HAI LAN

Lm sao chuyn sang ch in hoa


trong Java
Java convert string uppercase

#3 Phong cch code (1)


GNU style
if (condition)
{
do_something();
}

Whitesmiths style
if (condition)
{
do_something();
}

Allman style
if (condition)
{
do_something();
}

K&R style
if (condition) {
do_something();
}

#3 Phong cch code (2)

#4 Ti u m ngun vit

for ($i = 1; $i <= 10; $i++) {


echo "A";
}

echo str_repeat("A", 10);

#5 Phn tch k hng i

#6 S dng cc phm tt

#7 c v phn tch error message

#8 C nim am m

#9 u t cho ting Anh

#10 Tng cng mi quan h

Cu chuyn Ch Su

TNG KT KHA HC

You might also like