1. Trang chủ
  2. » Công Nghệ Thông Tin

Hướng dẫn Lập trình Android cơ bản

140 217 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 140
Dung lượng 1,55 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Được truy cập bởi lớp R.menu raw/ Chứa các file gốc, cần gọi Resources.openRawResource kèm với resource ID – tương ứng R.raw.filename để mở file... File XXX .xml sẽ được truy cập bởi

Trang 3

Giới thiệu Android OS

Source: GNU General Public License

Mobile OS được sử dụng nhiều nhất (1 tỉ thiết bị, khắp gần 200 quốc gia)

Trang 4

Giới thiệu

Trang 6

Kiến trúc

Trang 8

Libraries

Open-source Web browser engine WebKit

SQLite database

Play and record audio and video

SSL responsible for Internet security

Trang 11

Applications

Viết

Cài đặt

Trang 12

Đặc điểm

 Beautiful UI: beautiful and intuitive

 Connectivity: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX

 Storage: SQLite

 Media support: H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, AAC 5.1, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP

 Messaging: SMS and MMS

 Web browser: WebKit layout engine, Chrome's JavaScript engine (HTML5, CSS3)

Trang 15

Phiên bản

Trang 16

Ứng dụng Android

Trang 18

Eclipse IDE for Java Developers (optional)

Android Development Tools (ADT) Eclipse Plug-in (optional)

Trang 19

Android 4.4W 20 KITKAT_WATCH Android 4.4 19 KITKAT

Android 4.3 18 JELLY_BEAN_MR

2 Android 4.2, 4.2.2 17 JELLY_BEAN_MR

1 Android 4.1, 4.1.1 16 JELLY_BEAN

Android 4.0.3, 4.0.4 15 ICE_CREAM_SAN

DWICH_MR1

Trang 20

1 Android 3.0.x 11 HONEYCOMB

Trang 21

Environment Setup

Cho nhiều nền tảng

 Từ Microsoft Windows XP

 Từ Mac OS X 10.5.8 (Intel chip)

 Linux theo GNU C Library 2.7 trở đi

Trang 22

Bài 2: Các thành phần ứng dụng Android

Trang 23

OS và applications

Trang 24

Activities

Single screen with a user interface

 shows a list of new emails

Trang 26

Broadcast Receivers

thống

download và sẵn sàng cho việc sử dụng

{

}

Trang 27

Content Providers

dụng khác theo yêu cầu

Trang 28

Hello World Example

Eclipse IDE

Application

Trang 29

Workspace

Trang 30

Explorer

Trang 31

Explorer

1 src: java file chứa activity class (MainActivity.java)

 R file do trình biên dịch tạo ra

3 bin:

5 res/layout: user interface

Trang 32

MainActivity.java

package com example helloworld ;

import android os Bundle ;

import android app Activity ;

import android view Menu ;

import android view MenuItem ;

import android support v4 app NavUtils ;

public class MainActivity extends Activity {

@Override public void onCreate ( Bundle savedInstanceState ) {

super onCreate ( savedInstanceState );

setContentView ( R layout activity_main );

}

@Override public boolean onCreateOptionsMenu ( Menu menu )

return true ;}

}

Trang 34

The Manifest File

Thuộc thư mục root của ứng dụng

Chứa khai báo các thành phần ứng dụng

Giao tiếp giữa android OS và ứng dụng

Trang 35

The Manifest File

Trang 36

Strings File

strings.xml thuộc res/values

 Chứa các chuỗi liên quan ứng dụng: tên button, label, default text,

Ex: file strings.xml mặc định

<resources>

<string name = "app_name" > HelloWorld </string>

<string name = "hello_world" > Hello world! </string>

<string name = "menu_settings" > Settings </string>

<string n ame = "title_activity_main" > MainActivity </string>

</resources>

Trang 37

package com example helloworld ;

public final class R {

public static final class attr { }

public static final class dimen {

public static final int padding_large = 0x7f040002 ;

public static final int padding_medium = 0x7f040001 ;

public static final int padding_small = 0x7f040000 ;

}

public static final class drawable {

public static final int ic_action_search = 0x7f020000 ;

public static final int ic_launcher = 0x7f020001 ; }

}

Trang 38

Layout File

Thư mục res/layout

 Được tham chiếu đến ứng dụng

 Chứa định nghĩa nhiều control

Trang 39

Running the Application

Tạo AVD

Trang 40

Tạo project với Android Studio

Select Start a new Android Studio

project/File -> New -> New Project

Trang 41

Tạo project với Android Studio

Trang 43

Tổ chức và truy cập resource

Resource: bitmap, color, layout, string,

animation,

Chứa trong thư mục con của res\

Trong eclipse và trong android studio?

Trang 44

Tổ chức và truy cập resource

Trang 45

Tổ chức và truy cập resource

Directory Resource Type

anim/ XML - animations Truy cập bởi lớp R.anim

color/ XML - colors Truy cập bởi lớp R.color

drawable/ png, jpg, gif / XML -> bitmaps, state list, shapes,

animation Được truy cập bởi lớp R.drawable

layout/ XML, truy cập bởi lớp R.layout

menu/ XML (Options Menu, Context Menu, Sub Menu)

Được truy cập bởi lớp R.menu raw/ Chứa các file gốc, cần gọi

Resources.openRawResource() kèm với resource

ID – tương ứng R.raw.filename để mở file

Trang 46

Tổ chức và truy cập resource

Directory Resource Type

values/ •XML: strings, integers, colors File XXX xml

sẽ được truy cập bởi lớp R.XXX

xml/ XML – có thể được đọc tại lúc thực thi với

Resources.getXML(): lưu trữ các file config cho ứng dụng

Trang 47

Các resource lựa chọn/thay thế

đáp ứng tốt các yêu cầu

nhiều loại màn hình (khác nhau độ phân giải/ cung cấp nhiều resource chuỗi (string) cho nhiều ngôn ngữ

yêu cầu resource phù hợp

Trang 48

Các resource lựa chọn/thay thế

Trang 49

Truy cập resource

Code

 Tạo ra lớp R – chứa các ID cho các resource (res/)

ImageView imageView = ( ImageView )

findViewById ( R id myimageview );

 Truy cập resource thông qua tên/id của resource imageView setImageResource ( R drawable myimage );

 EX: Thiết lập giá trị TextView

TextView msgTextView = ( TextView )

findViewById ( R id msg );

msgTextView setText ( R string hello );

Trang 50

Truy cập resource

Layout

res/values/strings.xml

Layout file

Trang 51

Activity

Biểu diễn một màn hình (tương tự của sổ/khung)

Con của lớp ContextThemeWrapper

Android khởi động chương trình với

activity bắt đầu với hàm onCreate()

Trang 53

Service

Thành phần chạy bên dưới (background)

Thời gian thực thi dài

Không cần tương tác với người dùng

Tồn tại ngay cả khi ứng dụng không còn hoạt động

Trang 54

Trạng thái

Started: Bắt đầu khi thành phần ứng dụng (như activity) gọi startService()

Bound: Khi ứng dụng kết lại bởi

dạng client – server cho phép các thành

phần (component) tương tác với dịch vụ, gởi yêu cầu, lấy kết quả

Trang 56

 Khi một component khác muốn kết đên dịch vụ bởi bindService()

 Nếu hiện thực, phải cung cấp giao diện cho người dùng giao tiếp với dịch vụ bằng cách trả vê đối tượng IBinder

Trang 57

Các bước

MainActivity.java

liên quan đến service

<service /> (một ứng dụng có thể có một hoặc nhiều service)

<service android:name = ".MyService" />

Trang 58

Bài 3: User Interface

Layout

View - control

Event handling

Custom component

Trang 59

Layout

Các thành phần nhỏ là các View (button, text field, )

Các View có thể được nhóm vào

ViewGroup (ViewGroup cũng có thể chứa các ViewGroup khác) và định nghĩa layout riêng

Trang 60

Các loại layout

liên hệ nhau

phần

single view

lưới

Trang 61

Linear Layout

Sắp xếp theo chiều ngang/dọc

Trang 62

thể dùng các màu khác nhau như "#rgb",

"#argb", "#rrggbb", "#aarrggbb"

bottom, left, right, center, center_vertical, center_horizontal,

Trang 63

Ví dụ

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

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:layout_width = "fill_parent" android:layout_height = "fill_parent"

Trang 64

android:orientation="horizontal" android:orientation=“vertical"

Trang 65

Relative Layout

Các thành phần có liên hệ nhau

Trang 66

RelativeLayout Attributes

Thuộc tính Mô tả

Giá trị: top, bottom, left, right, center, center_vertical, center_horizontal,

Trang 67

<EditText android:id = "@+id/name" android:layout_width = "fill_parent"

android:layout_height = "wrap_content" android:hint = "@string/reminder" />

<LinearLayout android:orientation = "vertical"

android:layout_width = "fill_parent" android:layout_height = "fill_parent"

android:layout_alignParentStart = "true"

android:layout_below = "@+id/name" >

<Button android:layout_width = "wrap_content"

android:layout_height = "wrap_content" android:text = "New Button"

android:id = "@+id/button" />

<Button android:layout_width = "wrap_content"

android:layout_height = "wrap_content" android:text = "New Button"

android:id = "@+id/button2" />

</LinearLayout>

</RelativeLayout>

Trang 68

Demo

Trang 69

Table Layout

Trang 70

s

Tập các chỉ mục cho các cột được chia nhỏ hơn

Trang 73

View

Là đối tượng được vẽ lên màn hình cho phép nhận các tương tác từ người dùng cũng như hiển thị các thông tin cần thiết

2 dạng:

 View: các điều khiển đơn lẻ

 ViewGroup: tập hợp nhiều điều khiển đơn lẻ

Trang 74

View

Thể hiện:

diện như một hình chữ nhật tuỳ thuộc vị trí, kích thước, màu sắc và nhận vào cũng như xử lý các tương tác có liên quan

Xây dựng view theo 2 cách:

 Kéo thả và tuỳ chỉnh thuộc tính trong xml

 Thiết lập thông số và truy xuất trực tiếp trong Java Code (activity_main.java)

Trang 76

Log.i(“Event Handling”, “Being onClick”); }

});

Trang 77

View

 Thuộc tính Id được đi kèm với đối tượng View khi khai báo trong xml cho phép truy xuất trong code Java

Trang 78

View

giao diện (tuỳ thuộc vào thuộc tính của đối

Trang 79

View

cao của một đối tượng View

Trang 83

textView.setText(“Đối tượng TextView”);

android:text=“Đối tượng TextView”

Trang 86

Button

 Cho phép thể hiện các nội dung văn bản, hình ảnh – nhận và phản hồi tương tác nhấn từ người dùng

Trang 87

Button

Lắng nghe sự kiện nhấn trong Java-Code:

button.setOnCLickListener(new OnClickLisntener() {

@Override public void onClick(View v) {

Log.i(“Event Handling”, “Being onClick”); }

});

Lắng nghe sự kiện nhấn trong XML:

android:onClick=“MethodName”

Trang 88

Button

 Checkbox: hai trạng thái “được chọn” và “bỏ chọn”

 Phương thức lắng nghe sự kiện thay đổi trạng thái:

checkBox.setOnCheckedChangeListener(new

OnCheckedChangeLisntener() {

@Override public void onCheckedChangeListener (CompoundButton v, boolean isChecked) {

Log.i( “Event Handling”, “Being onClick” );

} });

Trang 89

Button

 RadioButton: hai trạng thái “được chọn” và “bỏ chọn”, không thể “bỏ chọn” khi đã “được chọn”

 Thường xử lý trên nhóm nút nhiều trạng thái

 Phương thức lắng nghe sự kiện thay đổi trạng thái trên nhóm nút

radioGroup.setOnCheckedChangeListener(new

OnCheckedChangeLisntener() {

@Override public void onCheckedChangeListener

(RadioGroup group, int checkedId) { Log.i(“Event Handling”, “Checked at id:” +

checkedId);

} });

Trang 90

Button

 ToggleButton: hai trạng thái “bật” và “tắt”, thể hiện trạng thái trên đối tượng

 Thuộc tính quan trọng:

 textOn: trạng thái nút đang bật

 textOff: trạng thái nút đang tắt

 Phương thức lắng nghe sự kiện thay đổi trạng thái

toggleButton.setOnCheckedChangeListener(new

OnCheckedChangeLisntener() {

@Override public void onCheckedChangeListener(CompoundButton

v, boolean isChecked) { Log.i(“ Event Handling ”, “Being onChecked”);

} });

Trang 91

Button

 Switch: hai trạng thái “bật” và “tắt”, có thể thao tác

bằng cách trượt ngón tay trên đối tượng

 Thuộc tính quan trọng:

 textOn: trạng thái nút đang bật

 textOff: trạng thái nút đang tắt

 Phương thức lắng nghe sự kiện thay đổi trạng thái trên nhóm nút

switchButton.setOnCheckedChangeListener(new

OnCheckedChangeLisntener() {

@Override public void onCheckedChangeListener(CompoundButton v,

boolean isChecked) { Log.i(“Event Handling”, “Being onChecked”);

} });

Trang 93

Các khái niệm

phương thức Phương thức sẽ được gọi khi người dùng “hành động” với view có listener

đã được đăng kí tương ứng

quản lý sự kiện (Event Handler) lấy các đăng

kí với Event Listener

đăng kí listener thì listener gọi bộ quản lý sự kiện là một phương thức quản lý dự kiện

Trang 94

Event Listeners & Event Handlers

Event Handler Event Listener & Description

onClick() OnClickListener(): clicks/touches/focuses

onLongClick() OnLongClickListener(): clicks/touches/focuses từ 1 giây

trở lên

onFocusChange() OnFocusChangeListener():mất focus

onKey() OnFocusChangeListener(): item được focus và ấn/thả

phím

onTouch() OnTouchListener(): ấn/thả phím hoặc bất kì cử động nào

trên màn hình onMenuItemClick() OnMenuItemClickListener(): chọn mục trong menu

onCreateContextMenu() onCreateContextMenuItemListener(): context menu

được tạo ra

Trang 95

Event Listeners Registration

Quá trình Event Handler lấy các đăng kí với Event Listener

Các các đăng kí event listener

 Sử dụng lớp nội Anonymous

 Lớp Activity kế thừa giao diện Listener

 Sử dụng activity_main.xml để xác định trực tiếp event handler

Trang 96

Event Handling Examples Using an Anonymous Inner Class

Thêm vào file src/MainActivity.java click

event listener và bộ quản lý sự kiện

Hiệu chỉnh res/layout/activity_main.xml file

chứa các control

b1 setOnClickListener ( new View OnClickListener () {

@Override public void onClick ( View v ) {

TextView txtView = ( TextView ) findViewById ( R id textView );

txtView setTextSize ( 25 );

} });

Trang 98

Custom Components

thuộc tính và dữ liệu tương ứng

LinearLayout

thức khởi tạo có tham số AttributeSet

đối tượng cho thành phần với các thuộc tính mặc định và các thuộc tính mới

Trang 99

Bài 4: Tài nguyên

Trang 100

Giới thiệu

yêu cầu về hiển thị: hình ảnh, âm thanh, văn bản, layout,…tương thích cho từng thiết bị

riêng biệt

phạm vi toàn ứng

dụng, dễ dàng thay đổi theo ngữ cảnh

của thiết bị hoặc không có tài nguyên để lựa chọn

biệt thông qua các từ hạn định và đường dẫn

Trang 101

Vị trí và các loại tài nguyên thông dụng

Trang 102

Định nghĩa tài nguyên

 Vấn đề về định nghĩa tài nguyên

 Có quá nhiều thiết bị có cấu hình khác nhau về kích thước màn hình, độ phân giải, phím vật lý…

 Mỗi thiết bị có thể hoạt động ở nhiều chế độ khác nhau: nằm ngang, nằm đứng, thay đổi ngôn ngữ…

 Từ hạn định: dùng để tạo ra các tài nguyên khác nhau cho nhiều thiết bị có cấu hình khác nhau hoạt động ở các chế độ khác nhau

Trang 103

Định nghĩa tài nguyên

Trang 104

Định nghĩa tài nguyên

Cách tạo tài nguyên:

 Tạo thưmục mới trong thưmục resvới định dạng:

<tên tài nguyên>-<từhạn định>

Ví dụ:

drawable-vi-rVN

Trang 105

Định nghĩa tài nguyên

Qui tắc đặt tên cho thưmục tài nguyên

 Có thể có nhiều từ hạn định cho một thư mục tài nguyên cách nhau bằng dấu gạch ngang (“-”)

 Các từ hạn định phải theo thức tự ưu tiên

 Các thư mục tài nguyên không được chứa thư mục tài nguyên khác

 Không cho phép hai từ hạn định giống nhau trên cùng một thư mục

Trang 106

Truy xuất tài nguyên

thông qu

cho tài nguyên (ID) thông qua AAPT (Android

Application Project Tool)

lớp tĩnh

o Java code: R.drawable.ic_launcher

o xml: @drawable/ic_launcher lớp R

Trang 107

Tài nguyên Alias

 Tạo ra tài nguyên từ tài nguyên có sẵn

 Phục vụ cho nhiều cấu hình thiết bị nhưng không phải là tài nguyên mặc định

 Ví dụ: Tạo biểu tượng ứng dụng khác nhau cho các ngôn ngữ khác nhau đối với tiếng Anh và tiếng Việt thì cùng biểu tượng

 Giải quyết vấn đề (không dùng Alias)

hạn định en và vi có hình ảnh giống nhau

 Giải quyết vấn đề (dùng Alias)

Trang 108

Các tài nguyên cơbản

 Các tài nguyên cơ bản được lưu trữ trong thư mục

res/values

 Định danh tài nguyên được khởi tạo thông qua

thuộc tính name, không phải tên tập tin

 Có thể lưu trữ nhiều tài nguyên vào trong một tập tin

Trang 111

 string_array_name: định danh dùng để truy xuất trong XML và Java Code

 text_string: nội dung lưu trữ cho từng item

 Truy xuất trong Java Code:

Resources res = getResources();

String[] androidCourses = res.getStringArray(R.array.android_courses);

Trang 112

String

 Quantity: được sử dụng cùng bộ số đếm tùy thuộc vào qui ước của từng ngôn ngữ, bao gồm các bộ đếm:

Ngày đăng: 30/05/2016, 22:34

TỪ KHÓA LIÊN QUAN

w