Showing posts with label Tự học lập trình Android. Show all posts
Showing posts with label Tự học lập trình Android. Show all posts

Hướng dẫn lập trình Android Native [Lý thuyết + Ví dụ demo]

Hướng dẫn lập trình Android Native 

Tài liệu gồm 22 bài thực hành và ví dụ demo sử dụng ngôn ngữ lập trình Java với công cụ Android Studio. Hướng dẫn này từng bước giúp bạn làm quen với lập trình Android Native.
    
Hướng dẫn lập trình Android Native [Lý thuyết + Ví dụ demo]

Bài thực hành 1

  1. Bắt đầu với Android cần những gì?
  2. Cài đặt Android Studio trên Windows
  3. Cài đặt Intel® HAXM cho Android Studio
  4. Cấu hình Android Emulator trong Android Studio


Bài thực hành 2 

  1. Tạo dự án Android đầu tiên - Hello Android
  2. Tìm hiểu cấu trúc Project qua các ví dụ đơn giản
  3. Sử dụng các tài sản ảnh và biểu tượng của Android Studio
  4. Device File Explorer


Bài thực hành 3

  1. Bật tính năng USB Debugging trên thiết bị Android
  2. Thiết lập SD Card cho Android Emulator
  3. Làm sao biết số số điện thoại của Android Emulator và thay đổi nó
  4. Làm sao thêm thư viện bên ngoài vào dự án Android trong Android Studio?
  5. Làm sao loại bỏ các quyền đã cho phép trên ứng dụng Android
  6. Làm sao loại bỏ các ứng dụng ra khỏi Android Emulator?


Bài thực hành 4

  1. UI Layouts
  2. LinearLayout
  3. TableLayout
  4. FrameLayout


Bài thực hành 5

  1. Button
  2. ToggleButton
  3. Switch
  4. ImageButton
  5. FloatingActionButton


Bài thực hành 6

  1. CheckBox
  2. RadioGroup và RadioButton
  3. Chip và ChipGroup
  4. Ví dụ với ChipGroup và các Chip Entry


Bài thực hành 7

  1. QuickContactBadge
  2. Space
  3. Toast
  4. Toast tùy biến
  5. SnackBar


Bài thực hành 8

  1. TextView
  2. TextClock
  3. EditText
  4. TextInputLayout
  5. TextWatcher


Bài thực hành 9

  1. Clipboard
  2. Tạo một File Chooser đơn giản trong Android
  3. Tạo một File Finder Dialog đơn giản trong Android
  4. AutoCompleteTextView và MultiAutoCompleteTextView


Bài thực hành 10

  1. ImageView
  2. ImageSwitcher
  3. ScrollView và HorizontalScrollView
  4. WebView


Bài thực hành 11

  1. SeekBar
  2. Dialog
  3. AlertDialog
  4. CharacterPickerDialog
  5. DialogFragment

Bài thực hành 12 

  1. DatePicker
  2. TimePicker
  3. TimePickerDialog
  4. DatePickerDialog


Bài thực hành 13

  1. Chronometer
  2. RatingBar
  3. ProgressBar
  4. Spinner


Bài thực hành 14

  1. OptionMenu
  2. ContextMenu
  3. PopupMenu
  4. Fragments


Bài thực hành 15

  1. ListView
  2. ListView với Checkbox sử dụng ArrayAdapter
  3. GridView
  4. CardView
  5. ViewPager2
  6. StackView


Bài thực hành 16

  1. Camera
  2. MediaPlayer
  3. VideoView
  4. SoundPool
  5. Networking


Bài thực hành 17 

  1. Xử lý JSON trong Android
  2. SharedPreferences
  3. Bộ lưu trữ trong (Internal Storage)
  4. Bộ lưu trữ ngoài (External Storage)


Bài thực hành 18

  1. Intents
  2. Intent tường minh, gọi một Intent khác
  3. Intent không tường minh, mở một URL, gửi một email


Bài thực hành 19

  1. Services
  2. Notifications


Bài thực hành 20

   1SQLite


Bài thực hành 21

  1. AsyncTask
  2. AsyncTaskLoader


Bài thực hành 22

  1. Google Maps Android API
  2. Văn bản thành lời nói trong Android
  3. Lấy số điện thoại trong Android sử dụng TelephonyManager
  4. SMS
  5. Phone Call
  6. Wifi Scanning

*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]

 Tham khảo: o7planning.org 


* Có thể bản quan tâm: [MMO] Hướng Dẫn *Kiếm Tiền Tự Động* Với Các Ứng Dụng Treo Máy *CỰC KỲ ĐƠN GIẢN VÀ HIỆU QUẢ*

[Tự học lập trình Android] Bài 6: Tìm hiểu về vòng đời của ứng dụng Android (Application life cycle)

Tìm hiểu về vòng đời của ứng dụng Android (Application life cycle)
1) Applications là gì ?
Mỗi một Android Project khi bạn biên dịch thành công thì sẽ được đóng gói thành tập tin .apk, tập tin .apk được gọi là một ứng dụng (application)
2) Activities là gì ?
- Trong một ứng dụng (application) sẽ có một hoặc nhiều Activity (có thể hiểu như là các màn hình tương tác giống như Form trong VS.Net).
- Mỗi một Activity này sẽ có một vòng đời riêng độc lập hoàn toàn với các Activity khác. Việc hiểu rõ vòng đời của Activity là rất quan trọng trong việc xử lý thông tin.
- Mỗi một Activity muốn được triệu gọi trong ứng dụng thì bắt buộc nó phải được khai báo trong file Manifest.XML
3) Activity Stack là gì?
- Tương tự như các ngôn ngữ lập trình khác, Activity Stack hoạt động theo cơ chế LIFO (Last In Firrst Out)
- Mỗi một Activity mới được mở lên nó sẽ ở bên trên Activity cũ, để trở về Activity thì bạn chỉ cần nhấn nút “Back” để trở về hoặc viết lệnh. Tuy nhiên nếu bạn nhấn nút "Home" rồi thì sẽ không thể dùng nút “Back” để quay lại màn hình cũ được.
Hình 1: Acitivity stack

- Có 2 kiểu mở Activity mới:
  + Mở Activity mới lên làm che khuất toàn bộ Activity cũ (không nhìn thấy Activity cũ): sảy ra sự kiện onPause rồi onStop đối với Activity cũ
  + Mở Activity mới lên làm che khuất một phần Activity cũ (vẫn nhìn thấy Activity cũ): Sảy ra sự kiện onPause với Activity cũ.
- Khi quay trở về Activity cũ thì sau khi thực hiện xong các hàm cần thiết, chắc chắn nó phải gọi hàm onResume để phục hồi lại trạng thái ứng dụng
- Như vậy ta thường lưu lại trạng thái của ứng dụng trong sự kiện onPause và đọc lại trạng thái ứng dụng trong sự kiện onResume
4) Tasks là gì?
- Task là khả năng thực hiện một công việc nào đó giữa các ứng dụng với nhau, cụ thể là các Activity
- Ví dụ bạn đang mở chương trình quản lý BlackList, trong chương trình này cho phép mở danh bạ để đưa vào danh sách đen. Lúc đó chương trình bạn sẽ gọi Activity của ứng dụng danh bạ, sau khi lấy xong lại quay trở về ứng dụng của bạn. Nhớ là 2 ứng dụng này hoàn toàn không liên quan gì tới nhau cả.

Hình 2: Task

5) Life Cycle States là gì?
Với mỗi Activity thường vòng đời có 3 trạng thái sau:
1- Running (đang kích hoạt)
2- Paused (tạm dừng)
3- Stopped (dừng – không phải Destroyed)
Hình 3: Life Cycle 


Trong đó:
1- Running (đang kích hoạt): Khi màn hình là ForeGround (Activity nằm trên cùng ứng dụng và cho phép người sử dụng tương tác)
2- Paused (tạm dừng): Activity bị mất trọng tâm (focus) nhưng mà vẫn nhìn thấy được Activity này (Ví dụ bạn mở một Activity mới lên dưới dạng Dialog). Trường hợp này nó vẫn có khả năng bị hệ thống tự động hủy trong tình huống bộ nhớ quá ít.
3- Stopped (dừng – không phải Destroyed): Activity mất focus và không nhìn thấy được (ví dụ bạn mở một Activity mới lên mà Full màn hình chẳng hạn). Trong trường hợp này nó có thể bị hệ thống hủy bất kỳ tình huống nào.
Hình 4: Application's Lifie cycle

* Như vậy cả Paused hay Stopped đều có khả năng bị Destroyed (hủy) khi bộ nhớ cần cho việc khác ưu tiên hơn.


6. Phân biệt Visible Lifetime và Foreground Lifetime
Hình 5: Phân biệt Visible Lifetime và Foreground Lifetime

- Visible Lifetime:
+ sảy ra từ sau khi gọi onStart => cho tới lúc gọi onStop: trong trường hợp này chúng ta vẫn có thể thấy màn hình Activity (có thể tương tác khi nó là foreground, không tương tác được khi nó không phải foreground như đã giải thích ở trên)

- Foreground Lifetime:
+ Sảy ra từ khi gọi onResume => cho tới lúc gọi onPause: trong suốt thời gian này Activity luôn nằm ở trên cùng và chúng ta có thể tương tác được với nó
7. Ví dụ demo
- Bạn tạo một ứng dụng tên là : CheckLifeTimeCycle với cấu trúc như hình dưới đây:

Hình 6: Project
- Double Click vào MainActivity.java:
- Sau đó bấm chuột phải vào màn hình Coding/ chọn Source/ chọn Override / Implement Methods… :

Hình 7

- Màn hình Override / Impement Methods sẽ hiển thị ra như bên dưới, chọn các hàm: onStart,onRestart, onResume, onPause, onStop, onDestroy…: rồi bấm OK


Hình 8

Coding:

Hình 9

Ở trên bạn thấy dòng lệnh trong hàm onResume:
protected void onResume() {
Toast.makeText(this,”onResume”, Toast.LENGTH_SHORT)
.show();
super.onResume();
}

Thực thi (run)
- Bây giờ bạn chạy ứng dụng vào Máy ảo Android và thực hiện một số thao tác: Mở một ứng dụng khác, mở Menu, nhấn nút Back, nhấn nút Home … quan sát hiện tượng bạn sẽ hiểu được cách vận hành các hành này.
- Bạn cần phải hiểu rõ về Life time cycle để giúp ích cho việc quản lý ứng dụng

*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]


-----------------------------------------
Xem thêm bài và ví dụ khác:

 

* Có thể bản quan tâm: [MMO] Hướng Dẫn *Kiếm Tiền Tự Động* Với Các Ứng Dụng Treo Máy *CỰC KỲ ĐƠN GIẢN VÀ HIỆU QUẢ*

[Tự học lập trình Android] Bài 4: Xây dựng ứng dụng Android đầu tiên - "Hello World"

Xây dựng ứng dụng Android đầu tiên - In ra màn hình dòng chữ "Hello World"

1. Tại một ứng dụng Android mới [Tham khảo hướng dẫn trong Bài 1]


Click nút Next bạn sẽ đến màn hình Project:


2. Cấu trúc của ứng dụng Android
Trước khi bạn chạy ứng dụng, chúng ta đi tìm hiểu một vài thư mục và tập tin trong dự án Android:


Đặc tả các thư mục và file:


S.N.
Đặc tả các thư mục và file
1
src
Này chứa các tập tin nguồn java. Theo mặc định, nó bao gồm một tập tin MainActivity.javasource có một lớp hoạt động chạy khi ứng dụng của bạn được đưa ra bằng cách sử dụng biểu tượng ứng dụng.
2
gen
gen chứa các tập tin R., Một tập tin trình biên dịch tạo ra tham chiếu tất cả các tài nguyên có trong dự án của bạn. Bạn không nên thay đổi tập tin này.
3
bin
Thư mục này chứa các tập tin Android gói. Apk được xây dựng bởi các ADT trong quá trình xây dựng và mọi thứ khác cần thiết để chạy một ứng dụng Android.
4
res / drawable-hdpi
Đây là một thư mục cho các đối tượng thể vẽ được thiết kế cho màn hình có mật độ cao.
5
res / layout
Đây là một thư mục cho các tập tin xác định giao diện người dùng của ứng dụng của bạn.
6
res/values
Đây là một thư mục cho các tập tin XML khác nhau có chứa một tập hợp các nguồn lực, chẳng hạn như dây và màu sắc các định nghĩa.
7
AndroidManifest.xml
Đây là biểu hiện tập tin trong đó mô tả các đặc điểm cơ bản của các ứng dụng và xác định mỗi thành phần của nó.


* File MainActivity

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) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
* File Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.helloworld"
   android:versionCode="1"
   android:versionName="1.0" >
   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="15" />
   <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       <activity
           android:name=".MainActivity"
           android:label="@string/title_activity_main" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER"/>
           </intent-filter>
       </activity>
   </application>
</manifest>
* File String

<resources>
    <string name="app_name">HelloWorld</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>

* File R

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

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;
    }
    public static final class id {
        public static final int menu_settings=0x7f080000;
    }
    public static final class layout {
        public static final int activity_main=0x7f030000;
    }
    public static final class menu {
        public static final int activity_main=0x7f070000;
    }
    public static final class string {
        public static final int app_name=0x7f050000;
        public static final int hello_world=0x7f050001;
        public static final int menu_settings=0x7f050002;
        public static final int title_activity_main=0x7f050003;
    }
    public static final class style {
        public static final int AppTheme=0x7f060000;
    }
}

* File Layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

   <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       android:padding="@dimen/padding_medium"
       android:text="@string/hello_world"
       tools:context=".MainActivity" />

</RelativeLayout>

* Chạy ứng dụng (RUN)


>> Clip hướng dẫn tạo Project ứng dụng mới

-


*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]

-----------------------------------------
Xem thêm bài và ví dụ khác:

 

* Có thể bản quan tâm: [MMO] Hướng Dẫn *Kiếm Tiền Tự Động* Với Các Ứng Dụng Treo Máy *CỰC KỲ ĐƠN GIẢN VÀ HIỆU QUẢ*