Menu

2/17/19

Demo04-Tinh tuổi của bạn.




File String.xml

<resources>
    <string name="app_name">TinhTuoi</string>
    <string name="txttem">TinhTuoi</string>
    <string name="txthoten">Nhap Vao Ho Ten</string>
    <string name="ten">Name</string>
    <string name="namsinh">Nam Sinh</string>
    <string name="year">Year</string>
    <string name="btn">Tinh</string>
</resources>


File design layout:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="30sp"
        android:text="@string/txthoten" />

    <EditText
        android:id="@+id/edtten"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        tools:ignore ="Autofill"
        android:hint="@string/ten"
        android:ems="10"
        android:inputType="textPersonName" />
    <TextView
        android:id="@+id/txtnamsinh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="30sp"
        android:text="@string/namsinh" />
    <EditText
        android:id="@+id/edtnamsinh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        tools:ignore ="Autofill"
        android:hint="@string/year"
        android:ems="10"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textAllCaps="false"
        android:text="@string/btn" />
    <TextView
        android:id="@+id/txtkq"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="30sp" />

</LinearLayout>

File sourcecode java.



package com.example.demo04;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {
    private Button btn;
    private EditText nam;
    private TextView ten,kq;
    private int namsinh;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        ten=(TextView)findViewById(R.id.edtten);
        nam=(EditText)findViewById(R.id.edtnamsinh);
        btn=(Button)findViewById(R.id.button);
        kq=(TextView)findViewById(R.id.txtkq);

        btn.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                namsinh =Integer.parseInt(nam.getText().toString());
                kq.setText(ten.getText().toString()+" "+ String.valueOf(2019-namsinh)+" tuoi");
            }
        });
    }
}

Demo03- Phép tính đơn giản.


Yêu cầu bài toán:
-Nhập vào 2 số nguyên a, và b. Xuất kết quả khi thực hiện phép toán cộng-trừ.


Xây dựng text trong file string.xml.

<resources>
    <string name="app_name">PhepToanDonGian</string>
    <string name="txt1">Nhap So Thu 1</string>
    <string name="txt2">Nhap So Thu 2</string>
    <string name="ex1">ex: 6</string>
    <string name="ex2">ex: 8</string>
    <string name="btn1">Tong</string>
    <string name="btn2">Hieu</string>
    <string name="txtkq">Ket Qua:</string>
</resources>

Thiết kế giao diện file layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtnhapso1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_margin="10dp"
        android:text="@string/txt1" />

    <EditText
        android:id="@+id/editnhapso1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        tools:ignore="Autofill"
        android:hint="@string/ex1"
        android:ems="5"
        android:inputType="number" />
    <TextView
        android:id="@+id/txtnhapso2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:textSize="30sp"
        android:text="@string/txt2" />

    <EditText
        android:id="@+id/editnhapso2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        tools:ignore="Autofill"
        android:hint="@string/ex2"
        android:ems="5"
        android:inputType="number" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:layout_margin="10dp"
        android:text="@string/btn1" />
    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:layout_margin="10dp"
        android:text="@string/btn2" />

    <TextView
        android:id="@+id/txtkq"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_margin="10dp"
        android:text="@string/txtkq" />

</LinearLayout>

Code mã nguồn tính toán: source.java


package com.example.demo03;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private Button btn1,btn2;
    EditText so1,so2;
    TextView kq;
    int tong,hieu;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //binding doi tuong
        so1=(EditText)findViewById(R.id.editnhapso1);
        so2=(EditText)findViewById(R.id.editnhapso2);
        kq=(TextView)findViewById(R.id.txtkq);
        btn1=(Button)findViewById(R.id.btn1);
        btn2=(Button)findViewById(R.id.btn2);

        btn1.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                String s1=so1.getText().toString();
                String s2=so2.getText().toString();
                tong=Integer.parseInt(s1)+Integer.parseInt(s2);
                kq.setText("Ket Qua "+tong);

            }
        });
        btn2.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                String s1=so1.getText().toString();
                String s2=so2.getText().toString();
                hieu=Integer.parseInt(s1)-Integer.parseInt(s2);
                kq.setText("Ket Qua "+hieu);

            }
        });

    }
}




































2/14/19

Demo02-Nhập vào tên, nhấn nút xuất câu xin chào.


Yêu cầu Demo02 này,

Ta thiết kế giao diện gồm 1 button, 1 textview hiển thị kết quả, 1 edittext cho người dùng nhập tên.
Khi nhập tên vào và nhấn button, kết quả xin chào bạn ABC.

Viết source cho file string.xml,

File này cho phép ta extract 1 chuỗi dùng cho các view trong layout.



<resources>
    <string name="app_name">Demo2</string>
    <string name="Name">Nhao ten vao day</string>
    <string name="Button">NutNhan</string>
    <string name="TextView">Xuatra</string>
    <string name="Goiy">vd: Hoa</string>

</resources>

Source file Activity_main.xml



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText  
        android:id="@+id/edit_ten"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="Autofill"
        android:hint="@string/Goiy"
        android:layout_margin="50dp"
        android:inputType="textPersonName"
        android:text="@string/Name"/>

    <Button
        android:id="@+id/btn_nutnhan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:text="@string/Button"/>

    <TextView
        android:id="@+id/txt_hienthi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="60dp"
        android:text="@string/TextView" />


</LinearLayout>


Source file mã nguồn java MainActivity.java


package com.example.demo2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

 private Button btn;
 private EditText ten;
 private TextView hienthi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.btn_nutnhan);
        ten = (EditText) findViewById(R.id.edit_ten);
        hienthi = (TextView) findViewById(R.id.txt_hienthi);
        btn.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View view) {
                String s = ten.getText().toString();
                hienthi.setText("Xin chao ban " +s);
            }
        });
    } 

Kết quả,


View và ViewGroup trong Layout.

 

 

-View

Các thành phần giao diện thường là một lớp kế thừa từ lớp View (android.view.View) của Android, các thành phần này cung cấp sẵn khá đa dạng như Button, TextView, CheckBox ... tất cả chúng ta gọi nó là View
Trong Android có một loại view có tên là ViewGroup (android.view.ViewGroup) nó có chứa các ViewViewGroup khác bên trong.

Các controls thuộc vào 1 nhóm view.


-ViewGroup

Chứa các ViewViewGroup khác bên trong.

Ví dụ, Linear LayoutViewGroup chứa các controls khác như button, textview, etc. các layouts.

Các controls thuộc dạng ViewGroup trong layout android. 


Hình bên trên,

Ta thấy LinearLayout là viewgroup, còn View là các Textview và Button

Các layout

Các layout chính là các View, được thiết kế với mục đích chứa các View con , sắp xếp vị trí các View con đó trên màn hình.Có một số layout mà bạn tham khảo trước tiên như:

FrameLayout đơn giản chỉ cung cấp một vùng màn hình, thường dùng nó để hiện thị một View con duy nhất. Nếu đặt vào nó nhiều view con, thì mặc định các view con này sẽ xếp chồng lên nhau. Tuy vậy, vị trí các view con trong nó cũng có thể điều chỉnh thông qua giá trị tham số gravity, ví dụ trong view con thiết lập android:layout_gravity="bottom|right" thì view con nằm về phía trái, dưới của FrameLayout

ConstraintLayout (giới thiệu trong Android 7), sử dụng layout này được khuyến khích cho hầu hết trường hợp. ConstraintLayout cho phép điều khiển vị trí và ứng sử của các view con trong layout bằng cách gán dàng buộc đơn giản vảo mỗi view con. Từ đó mà một bố cục phức tạp có thể dễ dàng được tạo ra mà sử dụng ít nhất sự lồng nhau trong layout (layout này nằm trong layout khác) giúp cho cải thiện tốc độ. ConstraintLayout cũng tích hợp sẵn vào Android Studio Layout Editor nên bạn có thể điều chỉnh một cách trực quan các View con trong layout này.

LinearLayout với layout này thì các view con được xếp nối tiếp nhau (linear) thành một hàng hay một cột (tùy vào lúc thiết kế thiết lập hướng xếp). Có một giá trị weight có thể gán vào mỗi View con để cho biết View con đó chiếm bao nhiêu không gian trong một tỷ lệ tương quan với các View con khác.

RelativeLayout chô phép các view con định vị căn vào liên hệ với các view con khác đồng thời liên hệ với view cha thông qua các tham số align và margin. Ví dụ một View con thiết lập nằm ở giữa RelateiveLayout (android:layout_centerInParent="true"), một View con khác có thể thiết lập nằm căn trùng lề phải với View này (android:layout_alignRight="@+id/other")

GridLayout chia ra thành lưới gồm một số hàng và một số cột để chứa các view con.

TableLayout cung cấp khả năng bố trí các view con thành một lưới dạng bảng (gồm có hàng và cột). Một dòng của bảng biểu diễn bàng đối tượng view con TableRow, trong nó chứa có phần tử View con hiểu như các ô bảng.

CoordinatorLayout nó được thiết kế nhằm mục đích có sự tương tác của các View con trong nó, đặc biệt sử dụng với ActionBar, FloatingActionButton, Snackbar ...


Chế độ Preview trong android studio.


Chế độ Preview trong android studio cho phép lập trình trình viên vừa code vừa xem giao diện GUI của layout 1 cách trực tiếp.
Để kích hoạt chế độ Preview ta vào Menu File-->Setting và tick chọn checkbox sau:


Cửa sổ Preview vẫn chưa hiện ra, ta chuyển sang tab Text, rồi làm như hướng dẫn.




Cấu trúc 1 project android.


Thư mục manifests.

  • Thư mục này chứa file AndroidManifest.xml. chứa các permission (cấp quyền ứng dụng ví dụ như: gọi điện, gửi tin nhắn hay đọc danh bạ …) cũng như các theme cho ứng dụng. Đồng thời nó cũng chứa thông tin về phiên bản SDK Trong file manifest bao giờ cũng có 3 thành phần chính đó là: application, permissionversion.

Thư mục java.

  • Nơi lưu trữ các file mã nguồn .java (file .java của Activity, java class, …)

Thư mục res.

Thư mục này có các thư mục nhỏ hơn bên trong, đó là: drawable, layout, mipmap, values.

  • drawable: thư mục này chứa ảnh của ứng dụng.

  • layout: thư mục này chứa các file .xml, là các file giao diện của Activity và các file giao diện mà chúng ta tạo riêng.

  • mipmap: thư mục này chưa các icon của ứng dụng và mỗi icon sẽ có nhiều file với nhiều độ phân giải khác nhau.

  • values: thư mục này chưa các file định nghĩa những giá trị được sử dụng trong ứng dụng của bạn đó là: colors.xml,  dimens.xml, strings.xml, styles.xml.

  • colors.xml : file này sẽ định nghĩa các màu sắc trong ứng dụng.

    • dimens.xml : file này sẽ định nghĩa về các khoảng cách toán học trong ứng dụng.

    • strings.xml : file này sẽ định nghĩa về các chuỗi sử trong ứng dụng.

    • styles.xml : file này định nghĩa theme cho ứng dụng.

Tổng quan về hệ điều hành android.





-Hệ điều hành android được phát triển bới google,  nền tảng Linux, được ứng dụng trên các Mobile, Tablet...
-Ngôn ngữ lập trình Java.
-Phát triển phổ biến trên ứng dụng của google như CHplay, Google Map...
-Về lịch sử phát triển lâu dài hơn IOS, IOS ra đời năm 2007, Adroid từ năm 2008.
-Dễ dàng lập trình với PC thông thường không cần Macbook, Mini Mac...


Phiên bản Tên Ngày phát hành
Android 1.5  Cupcake  27/4/2009
Android 1.6 Donut  15/9/2009
Android 2.0 - 2.1  Eclair  26/9/2009 (phát hành lần đầu)
Android 2.2 - 2.2.3  Froyo  20/5/2010 (phát hành lần đầu)
Android 2.3 - 2.3.7  Gingerbread  6/12/2010 (phát hành lần đầu)
Android 3.0 - 3.2.6  Honeycomb  22/2/2011 (phát hành lần đầu)
Android 4.0 - 4.0.4  Ice Cream Sandwich  18/10/2011 (phát hành lần đầu)
Android 4.1 - 4.3.1  Jelly Bean  9/7/2012 (phát hành lần đầu)
Android 4.4 - 4.4.4  KitKat  31/10/2013 (phát hành lần đầu)
Android 5.0 - 5.1.1  Lollipop  12/11/2014 (phát hành lần đầu)
Android 6.0 - 6.0.1  Marshmallow  5/10/2015 (phát hành lần đầu)
Android 7.0 - 7.1.2  Nougat  22/8/2016 (phát hành lần đầu)
Android 8.0 - 8.1  Oreo  21/8/2017 (phát hành lần đầu)


2/13/19

Demo01-Bắt sự kiện button.


Để làm việc với android ta cần biết cấu trúc 2 file chính:

+MainActivity.java: trong thư mục java,  là nơi chứa mã nguồn java, ta lập trình bắt sự kiện...ở đây.
+Activity_main.xml: trong thưc mục Layout, là nơi ta thiết kế giao diện cho android, tại đây ta có thể quản lí 2 tab là GUI và code.xml

Thiết kế máy ảo gồm 1 button và 1 textview, khi click vào button, textview sẽ xuất hiện. Vì vậy ta ẩn text của textview trong code xml trước.:


Tiến hành, căn chỉnh button và textview theo mong muốn sẽ tạo ra file activity_main.xml. Ta căn cứ vào ID của nó để bắt sự kiện-tham chiếu đối tượng.



Trong file code MainActivtity.java, ta tiến hành tạo event và bắt sự kiện.



Kết quả,




Hướng dẫn Android-Studio và lệnh căn bản.


Android Studio là một phầm mềm bao gồm các bộ công cụ khác nhau dùng để phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android như các loại điện thoại smartphone, các tablet... 

Yêu cầu phần cứng:

Microsoft® Windows® 8/7/Vista/2003 (32 or 64-bit)
Tối thiểu 2 GB RAM, cấu hình đề nghị: 4 GB RAM
Ổ cứng trống ít nhất : 400 MB
Độ phân giải tối thiếu 1280 x 800
Java Development Kit (JDK) 7 trở lên
Lựa chọn thêm cho accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality


Công cụ cần có sau khi cài đặt:

Bộ Android studio khi tải về bao gồm các thành phần sau:
– Android Studio IDE
– Android SDK tools
– Android 6.0 (Marshmallow) Platform (tính tới thời điểm này)
– Android 6.0 emulator system image with Google APIs

Hướng dẫn cài đặt.

Download trang chủ: https://developer.android.com/studio/

Cấu hình đường dẫn SDK path theo hướng dẫn.


Tiếp theo, ta update các SDK platform (hỗ trợ tạo máy ảo), Sdk tool là các công cụ cần để lập trình android

 Tạo 1 project đầu tiên,

 Vào New-->New Project,
Chọn empty activity,
Đặt tên và chọn nơi save project nhé,









 



Sau khi đã tạo xong project, ta phải thay đổi Layout thành LinearLayout













Tiến hành tạo máy ảo,



Mình chọn máy ảo Neo-S


Chọn source X86, Kitkat 4.4



Thêm tên cho máy ảo, chọn finish để hoàn tất.




Các lệnh căn chỉnh các control (button,listview,textview...)

-Căn chỉnh code trong Adroid Studio 

ctrl+alt+L

-Căn chỉnh chiều dọc vertical cho LinearLayout:

android:orientation="vertical"
 
-Căn chỉnh chiều rộng theo content: 
 
android:layout_width="wrap_content"
 
-Căn chỉnh chiều rộng theo layout chính
 
android:layout_width="match_parent"
 
-Căn chỉnh nội left,right,center,bottom
 
 android:gravity="left"
 
 -Căn từ trái qua bao nhiêu dp
 
android:layout_marginLeft="50dp" 
 
 -Cách từ trên xuống bao nhiêu dp
 
android:layout_marginTop="100dp"