tài liệu lập trình android
Trang 1Do thấy có nhiều bạn muốn tìm hiểu android nên Long đã họp bàn với admin của diễn đàn mình mở lớp dạy online hướng dẫn các bạn học lập trình android bắt đầu từ các bước cơ bản nhất.
Do đây là lớp học onl, chỉ hướng dẫn và dạy qua rum nên Long rất mong được sự hợp tác của các bạn Chính sự tự giác, tìm tòi kiến thức mới làm cho chúng ta giỏi hơn được
Các bạn vui lòng đọc và làm theo hướng dẫn
Trường hợp lỗi cài đặt không thành công vui lòng đăng bài viết vào mục hỏi đáp lập trình java rồi share links muốn được trả lời lên room chat Các bạn nào cài đặt thành công rồi thì giúp đỡ các bạn chưa thành công nhé!
Các bạn mới được add vào nhóm hôm nay chú ý đọc nội quy của rum chat nhé:
http://android.vn/threads/24088/
Bây h các bạn hãy bắt đầu tiếng hành đúng 9h15 Long sẽ quay lại tiếp tục hướng dẫn tiếp
Không spam nhắm mục đích các bạn onl trễ có thể đọc được bài hướng dẫn của mình ^^ thanks -
Tiếp theo sau khi đã cài đặt xong (bạn nào chưa cài xong để sau phần thảo luận nhé)
Long sẽ hướng dẫn các bạn tạo mới 1 ứng dụng, thuật ngữ tin học hay dùng là "tạo mới 1 project" … mời các bài theo dõi bài học Long đã soạn sẵn, kèm theo video clip hướng dẫn tại
http://android.vn/threads/24103/
Sau khi tao mới 1 ứng dụng, để chạy được ứng dụng đó ta cần phải sử dụng tới thiếu bị(thiết bị ở đây
là máy thật hoặc ta có thể sử dụng máy ảo)
Sau đây là bài biết hướng dẫn tạo một máy ảo cơ bản nhất thường sử dụng nhất mời các bạn theo dõi bài hướng dẫn tạo máy ảo do Long soạn sẵn có clip đính kèm nhé
http://android.vn/threads/24104/
Trong video clip Long khởi tạo một máy ảo Android 2.2 (Level 8)
Tại sao lại sử dụng máy ảo này?
Đơn giản level 2.2 là một level cũ, có độ ổn đỉnh nhất, ít gây ra lỗi nhất giống như Window xp của microsoft vậy thôi ^^
Trang 2Level 2.2 có đầy đủ mọi hỗ trợ cơ bản nhất đủ để tạo cho các bạn tạo một project, sự khác nhau giữa các phiên bản android Long sẽ giới thiệu cho các bạn sau, hoặc các bạn cũng có thể tự tìm hiểu sau này
-Tiếp theo Long hướng dẫn các bạn các chi tiết các phần trong 1 project android
Các bạn vui lòng theo dõi hình ảnh thứ 2 trong topic sau http://android.vn/threads/24107/
Long đã giải thích chi tiết trong topic rồi, ở đây Long chỉ giới thiệu thêm thôi
Số 1: Không đơn giản là tên của ứng dụng chúng ta đặt để chạy ứng dụng có rất nhiều cách, một trong các cách đó là các bạn click chuột phải vào trên project -> Chọn run as -> Android application
Ngoài ra khi kích chuột phải vào tên project -> chọn properties (ở dưới cùng) nó sẽ hiển thị ra bản
"Properties for <tên ứng dụng>" ở đây các bạn có thể nghịch xem ở đây, trong bản này có rất nhiều thông tin của cả Eclipse lẫn ứng dụng của bạn như cấp độ android sử dụng, nguồn, đường dẫn, các thư viện hỗ trợ cho ứng dụng
Không cần quan tâm kỹ lắm tới vần đề này ^^
Số 2: thư mục src, giống hoàn toàn như lập trình java thư mục này chứa rất nhiều gói, mỗi gói lại chứa rất nhiều lớp
Số 7: Sau này khi làm 1 ứng dụng android tốt (đẳng cấp), chúng ta phải tìm hiểu thêm các thư viện khác và các thư viện này sẽ được đặt trong thư mục libs
Rất quan trọng, nó được ví như trái tim của chúng ta vậy
Chú ý khi chuyển từ giao diện này sang giao diện khác, chúng ta phải đăng ký cho nó ở đây, nếu không lỗi chạy ứng dụng sẽ bắn lên dừng ứng dụng đột ngột
Các bạn mới làm quen với android thường xuyên mắc lỗi này lắm nên các bạn chú ý!
Sau khi làm quen với giao diện làm việc rồi ta thử tìm hiểu 1 chút về android và lịch sử của nó cho biết nhé
Android là gì? Links: http://android.vn/threads/23812/
vn.25405/
mọi bài hướng dẫn của Long đều sẽ được cập nhật tại đây!
Trang 3-Tiếp theo Long sẽ giới thiệu chi tiết 1 số đối tượng XML quan trọng thường hay sử dụng
Quan sát vào hình ảnh của topic trên nhé các bạn
Là một đối tượng dành cho người dùng nhập dữ liệu vào
ví dụ Long sẽ nhập vào đó là: "thanhlong90.it"
Số 3: Button
Thường dùng để cho người dùng nhấn vào (click vào)
sau khi nhấn vào rồi, hệ thống sẽ tự động xử lý, ví dụ lưu tên "thanhlong90.it" vào một nơi nào đó
Số 4: ImageView
là một đối tượng hiển thị hình ảnh do chúng ta đưa vào, như trong topic là Long đưa vào 1 hình nền màu xanh
Số 5: CheckBox
cho phép người dùng chọn làm gì đó hay không, ví dụ như trong khi đăng nhập Skype có có ô
checkbox hỏi "bạn có muốn tự động đăng nhập không?"
Số 6: RadioButton
Thường cho người dùng chọn 1 trong số nhiều các yêu cầu
Số 7: Spinner:
Sẽ có nhiều dữ liệu cho người khác chọn cái này gon gàng hơn RadioButton 1 tí
Số 8: Thanh tiêu để hiển thị ứng dụng của bạn
Trang 4-Ngoài ra Long sẽ giới thiệu nhanh 1 số đối tượng khác nữa
- Đối tượng XML - ToggleButton: là 1 nút on/off giống như trên máy tình bỏ túi vậy
- Đối tượng XML - ProgressBar:là đối tượng hiện thị tiến trình của 1 công việc đã được bao nhiêu % rồi
- Đối tượng XML - SeekBar: là một đối tượng có thể tùy chỉnh 0% - 100% của một cái gì đó ví dụ như volume
- Đối tượng XML - RadioGroup: là đối tượng quản lý nhiều RadioButton ở trên cho phép lựa chọn 1 RadioButton duy nhật
- Đối tượng XML - ListView: là đối tượng thể hiển một danh sách có điểm chung
ví dụ như danh sách tên của học viên lớp học lập trình android free
- Đối tượng XML - WebView: Là đối tượng cho phép bạn hiển thị 1 trang web ngay trong ứng dụng của mình với điều kiện là phải có kết nối intenet
- Đối tượng XML - SearchView: là đối tượng nhập vào thông tin tìm kiếm giống như trang
google.com vậy
- Đối tượng XML - VideoView: hiển thị 1 video giống như youtube vậy
- Đối tượng XML - Gallery:một đối tượng xem hình ảnh
- Đối tượng XML - Các đối tượng ngày giờ: hiển thị thông tin ngày tháng, thời gian và cực nhiều các đối tượng khác nữa
Ngoài ra sau này khi làm ứng dụng thực tế, dự án cho khách hàng chúng ta cần phải tạo riêng đối tượng cho chúng ta sử dụng dựa vào các đối tượng có sẵn ví dụ như probar Long đã làm (xem tham khảo thêm) ở bài hướng dẫn tự tạo 1 đối tượng ProgressBar đơn giản
nhớ là xem tham khảo thôi nhé: http://android.vn/threads/24032/
Long xin tạm nghỉ ít phút, phần tiếp theo là hướng dẫn chỉnh sửa hiển thị của 1 đối tượng XML -
Trước khi qua phần chỉnh sửa code xml, Long giới thiệu thêm 2 đối tượng nữa rất quang trọng
Trang 5khi đầy sẽ tự động xuống hàng dưới
- Thuộc tính id: android:id="@+id/textView1"
thường đặt theo quy ước: @+id/<tên id chú ý ko trùng nhau>
để sau này chúng ta biết xử lý đối tượng nào qua id này trong phần code trong class có đuôi java
- Thuộc tính độ rộng: android:layout_width="50dp"
ngoài đơn vị dp ra còn tính theo nhiều đơn vị khác px, sp
ngoài ra còn có thể thiết lập như sau: fill_parent (làm đầy phần còn lại của đối tượng XML cha), match_parent (đè toàn bộ lớp cha), wrap_content(nhỏ nhất, hợp lý nhất có thể)
- Thuộc tính độ cao: android:layout_height
tương tự như thuộc tính của độ rộng
- Thuộc tính text: android:text="hello android"
thiết lập dòng hiển thị cho đối tượng (chỉ dành cho 1 số đối tượng nhất định)
- Thộng tính text ẩn: android:hint="Nhập tên tại đây"
hiển thị dòng thông báo mờ mờ chủ yếu trên đối tượng EditText và tương tự như đối tượng này
- Thuộc tính trọng lượng : android:gravita"center"
cho nội dụng của XML hướng về 1 phía cố định: center, bottom, top, left, right
- Thuộc tính nền: android:background=" <đường dẫn hình ảnh> "
Thiết lập hình nền cho đối tượng xml
- Thuộc tính cỡ chữ: android:textSize=" "
thiết lập cỡ chữ hiển thị trong 1 vài đối tượng
- và có rất nhiều thuộc tính khác nữa, đến Long còn tìm hiểu chưa Hết
-Elipse cho chúng ta một lợi thế là dự đoán code sinh ra đúng, hợp lý
nên các bạn chỉ cần bấm "android:" sau đó bấm tổ hợp phím ctrl + space
sẽ có 1 đống thuộc tính cho bạn chọn (toàn tiếng anh)
dựa vào các từ đó bạn cũng sẽ hiểu nó thiết lập thuộc tính gì rồi
ai không biết tiếng anh thì vào http://translate.google.com.vn/ để dịch nhé
Trang 6protected void onCreate(Bundle savedInstanceState) {
//Thực hiện lại việc kế thừa
super.onCreate(savedInstanceState);
//Thiết lập giao diện sử dụng lấy từ giao diện activity_main.xml
setContentView(R.layout.activity_main);
}
hàm này sẽ chạy trước
nó sẽ thực hiện hàm onCreate() của lớp cha trước (ở đây lớp cha là Activity)
sau đó nó sẽ thực hiện setContentView(R.layout.activity_main);
tức là đính kèm cái giao diện XML mà chúng ta thiết kế
nó là activity_main.xml (theo ví dụ)
- Khi thực hiện onCreate xong thì hiển thị lên giao diện, ví dụ 1 giao diện nào đó cho bạn nhập dữ liệu vào ô EditText, sau rồi làm gì gì đó nữa …
- Cho đến khi bạn gọi 1 lớp khác, có thể là 1 Activity khác chồng lên Activity cũ
thằng Activity cũ này sẽ thực hiện việc onPause()
cụ thể ở đây giống như gấu bắc cực đi ngủ đông vậy :D
nó sẽ nằm ngủ cho đến khi 1 cái gì đó gọi nó dậy, ví dụ bạn Hủy đi thằng Activity vừa chồng lên nó
- Khi nó dậy, cụ thể là nó sau khi ngủ, dậy và hoạt động trở lại thì nó thực hiện hàm onResume()chúng ta nếu cần thiết sẽ định nghĩa lại 2 thằng này nếu cần thiết
ví dụ sau khi ngủ dậy, ta thiết lập 1 đối số nào đó trở về 0, thì kế thừa thằng onResume() rồi trong hàm này ta đặt cho nó = 0
- onStop() là 1 cấp cao hơn, hãy tưởng tượng rằng 1 bài hát khi bạn bấm Stop khi Restart lại nó sẽ chạy bài hát đó lại từ đầu không giống như Pause và Play là dừng ở đâu thì chạy lại ngay ở vị trí đó
Trang 7- onDestroy() khi bị phá hủy hoàn toàn, nó như 1 hơi thở cuối cùng của Activity vậy, trăng trối cái gì
đó trước khi chết Vĩnh Viễn
[8:08:57 PM] thanh long: Kiến thức lý thuyết quả là hơi khô khan, nhưng các bạn chỉ cần hiểu sơ sơ như vậy là được, bây giờ thì chúng ta sẽ thực hành về onCreate() và làm cái gì đó trong thằng này!!!bài thực hành ở hướng dẫn mẫu trong topic http://android.vn/threads/24214/
các bạn thử làm theo xem sao nhé
ai làm ko được thì nhớ pm riêng Long nhé
<tên Activity hiện tại>.this.startActivity(myIntent);
ví dụ như Activity hiện tại là MainActivity và muốn chồng lên nó Activity 2 thì làm như sau:
tròng hàm onClick(), thêm 2 dấu // vào trước cái noiDungHienThi.setText("Xin chào
thanhlong90.it");
khóa nó lại
enter xuống dòng thêm đoạn code:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
MainActivity.this.startActivity(myIntent);
Nhớ Activity2 phải được khai báo trong Manifest ko thôi xảy ra lỗi trong lúc chạy
chương trình sẽ bị rụng 1 cách đột ngột :D và nhớ luôn là phải phân biệt rõ ràng 2 cái: đôi tượng trong XML và đối tượng trong java nhé
Xong rồi hãy chạy thử chương trình, click vào nút button và chuyển qua Activity mới
-Lưu ý 1 điều vô cùng quan trọng như sau, chỉ có thể có tối đa 10 cái Activity chồng lên nhau
nếu quá 10 bác Android sẽ tự dọn dẹp, thằng nào nằm dưới cùng sẽ bị onDestroy và vứt vô sọt rắc ^^ngoài ra có 1 câu lênh như sau:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
MainActivity.this.startActivity(myIntent);
finish();
hàm finish() sẽ có nhiệm vụ sau khi bắt đầu activity mới sẽ cho em nằm dưới đi ngủ sớm
tức là kết thúc (onDestroy) bác activity này sau khi có 1 bác activity khác chồng lên
Trang 8-Về Intent không những có chức năng start Activity mới mà có kiêm luôn nhiệm vụ gửi theo 1 cái gì
đó giống như hành lý vậy
nó có thể đính kèm theo 1 biến String, 1 biến Int, 1 biến boolean hay thậm chí 1 cái mảng dữ liệu cũng được tất
đơn giản như sau:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
Bundle myBundle = new Bundle();
myBundle.putString("ten", "thanhlong90.it");
myBundle.putInt("tuoi", 23);
myIntent.putExtras(myBundle);
MainActivity.this.startActivity(myIntent);
<<< Bundlegiống như 1 cái bẫy zip nén nó vào hay giống như gói gém hành lý lại vậy
và trong activity mới sẽ nhận tiền bằng cách ghi rõ họ tên người gừi ký tên đóng dấu
^^
Bundle gotBasket = getIntent().getExtras();
String hoten = gotBasket.getString("ten");
int sotuoi = gotBasket.getInt("tuoi");
Bài 4
1) Font chữ
chắc hẳn các bạn đã biết về cái này rồi
chúng ta từng gặp nhiều font chữ trong Word - Exel
hôm nay Long sẽ giới thiệu nó trên android
trong một số đối tượng XML có thuộc tính quy định font chữ là
tuy nhiên android chỉ hổ trợ cho chúng ta 4 font chính thôi
trong lúc code chúng ta có thể tải font chữ từ ngoài về
Trang 9đặt vào trong thư mục asset và viết code sử dụng nó
TextView tv = (TextView) findViewById(R.id.textView1);
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "tenFontChu.ttf");
tv.setTypeface(myTypeface);
-2) Thêm một vài thuộc tính khác trong XML
- android:background="@drawable/anhnencuatoi" thiết lập ảnh nền cho một vài đối tượng XML, thường sử dụng ảnh có đuôi png jpg đặt trong thư mục drawable
- android:paddingTop , Bottom, Left, Right là cách đối tượng xung quanh nó (nếu có) đơn vị thường
sử dụng là dp, sp, px
- android:password = "true" bật chế độ ẩn ký tự nhập vào 1 ô EditText
- android:clickable="true"/"false" cho phép click vào/không cho phép click vào đối tượng xml đó
- android:hint"abcdef" 1 dòng chữ thông báo mờ mờ trên ô EditText
- android:textColor="#fff24f" màu Text
- android:visibility="invisible" làm tàng hình, ẩn đối tượng đó đi
- android:gravity="center" sắp xếp các đối tượng nằm trong nó về chính giữa
và còn nhiều nhiều nữa, Long lọc ra các đối tượng thường sử dụng thôi
-Hôm trước Long đã giới thiệu nhiều về TextView, EditText, Button
nên hôm nay sẽ giới thiệu tiếp về RadioGroup và Radiobutton, ToggleButton, ProgressBar,
AutoCompleteTextView
mời các bạn xem một vài demo tại http://android.vn/threads/23795/
cố gắng làm thử nhé
-Tiếp theo là một vài đối tượng liên quan đến thời gian
- TimePicker là một đối tượng đo thời gian gồm giờ và phút (AM,PM)
- DigitalClock cũng là 1 đồng hồ hiển thị dưới dạng kiểu Text nhỏ hơn và có đơn vi giây nữa
- AnalogClock là đồng hồ có hiển thị 3 kim giờ phút giây giống như đồng hồ của chúng ta vậy
- Ngoài ra còn có Calendar là hiển thị ngày tháng năm và chúng ta sẽ gặp lại đối tượng này trong phần bài học sau
đổi tượng này chủ yếu là xử lý trong code
Các bạn có thể vào XML của 1 Activity để tìm hiểu xem trông như thế nào nhé
Trang 10Bài 5
Như ngày hôm qua Long đã giới thiệu thì hôm nay chúng ta sẽ học về cách làm 1 menu trong ứng dụng Android
Trong android menu cũng có rất nhiều loại nhưng người ta thường sử dụng 2 loại menu thôi
1 là menu nằm ở phía dưới màn hình
2 là menu hiện ra và nằm ngay chính giữa màn hình che phần hiển thị của activity lại
-và để lắng nge, nhận biết một sự kiện khi bạn click chọn 1 item trong menu đó
ta kế thừa lại của class Activity hàm
Để viết lại hàm này, trước tiên ta đưa con trỏ chuột vào giữa màn hình Eclipse (màn hình code java) chọn “Source” rồi chọn “Override/Implement Methods” để hiển thị hộp thoại cùng tên, sau đó sổ cây thư mục “Activity” đánh dấu vào hàm “onMenuItemSelected” rồi nhấn “OK” (Chú ý cách này sử dụng để Override lại nhiều hàm khác nữa) và ta có kết quả như sau:
-Phần này lớp Activity của android đã xử lý gần hết
chúng ta chỉ việc gọi, truyền đối số như tiêu đề, id, hình ảnh hiển thị thôi
Nếu muốn xem chi tiết class Activity hoạt động như thế nào, mời các bạn xem ở đây, lưu ý cứ xem qua cho biết thôi, không biết cũng không sao
Tiếp theo Long xin nói thẳng luôn là muốn trở thành 1 dân lập trình chuyên nghiệp các bạn chú ý phải học cách search Google với từ khóa tiếng Anh thật nhiều nhé
Ví dụ muốn tìm hiểu mã nguồn của đối tượng Activity hãy lên google search với từ khóa “android activity souce code” và tìm trang tương tự như trang bên dưới …
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java
Trang 11phiên bản 1.5
Android có nhiều phiên bản được nâng cấp liên tục do vậy các đối tượng trong mỗi phiên bản có thể khác nhau (thêm hoặc bị xóa vài thuộc tính và phương thức …) do vậy chúng ta cũng cần phải nắm vững điều này bằng cách đọc lướt sơ qua các đối tượng trong mỗi phiên bản
-Ngoài ra trong lập trình java, các bạn thường sử dụng hàm
System.out.println(" "); để in ra các biến để kiểm tra
thì trong android còn có 2 cách khác hay hơn kiểm tra trực tiếp được trong thời gian chạy
1: Đối tượng Toast trong android sử dụng trên Activity
Toast.makeText(MainActivity.this, "Ban vua chon nut Selected", Toast.LENGTH_SHORT).show();đoạn lệnh trên sẽ thực hiện 1 công việc là hiển thị dòng chữ "Ban vua chon nut Selected" lên trên Activity hiện tại trong 1 thời gian ngắn nhất định
2: Sử dụng Log (Các anh chị pro thường dùng cách này để bug lỗi)
Có rất nhiều loại Log khác nhau như: Log.d; Log.e; Log.i; Log.v; Log.w; Log.wtf mỗi loại có 1 chức năng khác nhau nhưng đếu có điểm chung nó sẽ bắn ra (hiển thị trên) LogCat trong thời gian chạy thực của ứng dụng
vd:
Log.v("Bug Loi So 1", "Gia tri ta ve là" + ketqua);
Log bắn ra cũng đồng nghĩa với việc code đã thực hiện tới vị trí đó mà không phát sinh ra lỗi
các bạn nên chú ý tìm hiểu thêm về Log nhé, sẽ có lợi thế khi bug lỗi ứng dụng lắm đấy!
-Bài học quả là khô khan thật nên bây h Long sẽ cho các bạn xem 1 demo về Menu
cách bạn xem và có gì không hiểu có thể pm Long để hỏi nhé
Hướng dẫn tạo menu trong lập trình ứng dụng android
http://android.vn/threads/24334/
- Bài tập (không cần nộp)
-Như Long đã nói từ đầu học android theo nhóm mang tính chất tự giác rất cao, các bạn phải tự giác làm bài tập và phải phát triển chúng hay hơn đẹp hơn nữa
và hôm nay sẽ là 1 cài tập không cần nộp
Bài tập: Hãy tự làm ứng dụng gồm 2 Activity như bài hướng dẫn sử dụng các hình ảnh icon khác như bạn mong muốn
gợi ý nguồn icon miễn phí có thể tìm kiếm tại: http://www.iconfinder.com/
Bài 6
Chào các bạn bài học hôm nay Long sẽ giới thiệu về WebKit trong lập trình android
các bạn biết các webkit free (ứng dụng dạng trang web) có rất nhiều trên kho ứng dụng android (store)
Trang 12như là google chorme, firefox, safari, opera
các bạn chỉ việc tải về cài đặt và sử dụng thôi
nhưng chúng ta cũng có thể làm 1 ứng dụng webkit tương tự như vậy
Để sử dụng Webkit trong android
các bạn sẽ phải tìm hiểu về đối tượng WebView trong android
bài học hôm nay sẽ tập trung vào vấn để này nên các bạn chú ý nhé!
-Hướng dẫn tạo 1 ứng dụng Webkit đơn giản
1) Trong file XML (activity_main.xml)các bạn hãy kéo thả 1 đối tượng WebView vào nhécode sẽ như sau:
2) Trong class kế thừa Activity (cụ thể trang mặc định là MainActivity.java), các bạn
“setContentView(activity_main.xml);” file XML này vào
rồi khai báo 1 biến toàn cục WebView lên phía trên
“private WebView browser;”
khi khai báo ta lấy đối tượng đó từ XML để code
rồi thiết lập một đường dẫn đến trang google để test, code như sau:
“browser = (WebView) findViewById(R.id.webkit);
browser.loadUrl("https://www.google.com.vn/");”
Mục đích là nó sẽ load trang web https://www.google.com.vn
3) Thiết lập kết nối intenet cho ứng dụng này
(Chú ý quan trọng)
Trang 13Thuật ngữ của dân CNTT nói về cái này là cách "permission" hoặc tiếng Việt gọi là “cờ”, nó cấp quyền cho phép hoặc không cho phép sử dụng (ví dụ trường hợp này là cho phép kết nối intenet hoặc không cho phép kết nối intenet)
Trong ví dụ này đơn giản ta chỉ việc đặt cờ “cho phép kết nối intenet” trong tập tin
AndroidMenifest.xml và chỉ việc thêm đoạn code sau
<uses-permission android:name="android.permission.INTERNET"/>
trên cặp thẻ <application > </application>
Long chưa kịp lập topic hướng dẫn nên các bạn chú ý tự làm theo hướng dẫn nhé, links sẽ share sauhãy tự làm theo và hưởng thụ kết quả đã đạt được nhé :D
trước khi tìm hiểu sâu hơn về webview tạm nghỉ 1 tí nhé
-Các bạn có thể vào đây để xem lại và download demo vừa rồi nhé http://android.vn/threads/24354/Ngoài ra các bạn còn có thể load một trang web do chính các bạn thiết kế ra
code như sau:
browser.loadData("<html><body>Đây là trang web của tôi</body></html>", "text/html", "UTF-8");hoặc cũng có thể load 1 trang web bạn viết sắn đuôi html đặt trong thư mục asset
với câu lệnh như sau
browser.loadUrl("file:///android_asset/mywebsite.html");
<<< mywebsite.html nhớ trang này đặt trong thư mục asset của ứng dụng nhé
tuy nhiên 1 ứng dụng như vậy thì không hay lắm vì người dùng có tập tin akp có thể giải nén ra và xem được nguồn của trang web xử lý như thế nào
-Cuối cùng 1 vài phương thức khác của đối tượng WebView
- browser.goForward(); đi tới trang web trước
- browser.goBackOrForward(-2); browser.goBackOrForward(+2); đi về 2 bước trang web trước và sau
- browser.canGoBack(); kiểm tra có trang web trước trang này hay ko trong lich sử
- browser.clearCache(true); xóa cache
Trang 14permission này thì đừng hỏi vì sao mà chương trình nó dừng đột ngột khi đoạn cần cần thực hiện là không hoạt động.
http://android.vn/threads/24561/
[9:24:04 PM] thanh long: Cuối cùng trước khi kết thúc là bài tập :D
khá dễ http://android.vn/threads/24356/ hôm nay kết thúc nhé
Bài 7
Chào các bạn trên 1 trang web hay một phần mềm nào đó, khi bạn muốn tắt một ứng dụng đi thì nó sẽ thường bắn lên một thông báo để xác nhận người dùng có chắc chắn muốn làm việc đó hay không, và hủy nếu người bấm lỡ tay vào đó Trong lập trình ứng dụng android cũng vậy, chúng ta cần phải hiển thị một thông báo khi người dùng muốn làm cái gì đó hay không
Bây h chúng ta sẽ bắt đầu đi vào tìm hiểu đối tượng AlertDialog nhé
AlertDialog là gì, đơn giản dễ hiểu nó là 1 đối tượng gần gần giống như 1 Activity vậy
khi nó được gọi nó sẽ chồng lên Activity hiện tại (hoặc 1 cái đối tượng nào đó tương tự Activity)tuy nhiên nó không chiếm hết toàn bộ giao diện hiển thị mà chỉ chiếm 1 phần nào đó thôi, phần Activity nằm dưới vẫn hiển thị mờ mờ
Thường khi 1 AlertDialog bắn lên là do 1 sự kiện nào đó gọi, ví dụ kích vào nút Button trong
Activyty, hoặc sinh ra hay được gọi nếu trong một hàm nào đó có lỗi mà hệ thống muốn thông báo đến cho người dùng biết
-1) Khởi tạo 1 đối tượng
AlertDialog.Builder builder = new AlertDialog.Builder(this);
2) Thiết lập tiêu đề hiển thị cho Dialog:
builder.setTitle("Tieu De AlertDialog");
Tức là tạo một tiêu đề thông báo cho người dùng biết đây là hộp thoại gì!
3) Thiết lập thông báo muốn hiển thị:
builder.setMessage("Thong bao mot cai gi do! ");
Thông báo đến người dùng chi tiết lỗi nào đó để người dùng biết và lựa chọn bấm nút cho phù hợp.4) Add thêm nút vào dialog:
Tức là chúng ta tạo thêm nút nhằm cho người dùng lựa chọn, ví dụ nút “Đồng y”, “Hủy”, “Tạm dừng”, “Tiếp tục tìm kiếm” …
builder.setPositiveButton( );
builder.setNeutralButton( );
builder.setNegativeButton( );
và còn nhiều nút nữa, chú ý tìm hiểu mỗi cái khác nhau nhé
5) Ngoài ra có thể add cả 1 cái EditText hoặc vài cái khác vào trong đối tượng này nữa
Trang 156) Cuối cùng và quan trọng là lệnh hiển thị:
builder.show();
Nhằm thực hiện công việc hiển thị đối tượng AlertDialog
7) Còn rất nhiều thuộc tính khác các bạn tự tìm hiểu nhé chứ nói tới sáng mai :D chưa chắc hết bằng cách: <tên đối tượng>.<thực hiện tổ hợp phím ctrl + space> nhẳm sổ các phương thức thuộc tính của đối tượng ra để xem
-Ngoài ra dành cho các pro, các bạn có thể định nghĩa lại một đối tượng mới kế thừa từ AlertDialog để
sử dụng cho riêng bạn, và Long cũng sẽ có 1 bài custom riêng sau này giới thiệu sau cho các bạn vị sợ giới thiệu bậy h các bạn sẽ hơi chóng mặt ^^
Cho nên bây giời Long sẽ giới thiệu tương tự như đối tượng Toast Long giới thiệu các bạn hôm trước vậy, chúng ta có thể định nghĩa lại nó hiển thị theo ý của mình
Nói rõ 1 tí luôn custom ở đây chính là mình sẽ chỉnh sửa lại kích cỡ, màu sắc, vị trí các đối tượng bên trong nó theo ý muốn của mình và làm cho nó phù hợp với ứng dụng hiện tại Thông thường custom một đối tượng, người ta thường tạo một đối tượng mới và kế thừa lại đối tượng đó đồng thời thêm các thuộc tính phương thức và thay đổi các giá trị của các thuộc tính cũ cho phù hợp
-Nói nhiều quá các bạn cũng ko hiểu nên bây giờ trước các bạn hãy vào links bên dưới là 1 demo Long
đã chuẩn bị sẵn các bạn trước tiên hãy xem video của Long xem nó hoạt động như thế nào, sau đó download source code về đọc và nghiên cứu cho thật hiểu
Trong topic Long sắp gửi links cho các bạn ngay sau đây có một Activity định nghĩa lại đối tượng Toast, các bạn chú ý xem và vận dụng nhé!
Demo ứng dụng của bài học hôm nay
http://android.vn/threads/24421
các bạn nhớ xem thật kỹ nhé
- Bài tập
-Hãy làm một ứng dụng tương tự như ứng dụng demo của Long bao gồm 2 Activity
Activity 1 sau khi click vào một nút trên nó sẽ hiện ra 1 dialog bao gồm 2 nút (Đồng ý và Hủy) và 1 EDITTEXT nằm trong nó luôn Khi click vào nút đồng ý thì nó kiểm tra EDITTEXT có nhập số
12345 chưa, nếu rồi thì nó chuyển qua Activity 2, nếu chưa thì nó bắn lên 1 TOAST thông báo sai mật khẩu! Cái TOAST custom cho đẹp đẹp theo ý bạn nhé!
Bài 8
Bài hôm nay Long sẽ giới thiệu các sự kiện cơ bản trong lập trình ứng dụng android
Trong các demo ví dụ bài tập của Long cho các bạn hôm trước
Long thường sử dụng sự kiện onClickListener() để lắng nge việc các bạn click vài button
rồi từ sự kiện đó các bạn sẽ làm (xử lý) tiếp các vấn đề khác
Trang 16dựa vào onClickListener() thì các bạn cũng có thể hiển phần nào về sự kiện rồi nhỉ
Như các bạn biết trong một ứng dụng thì có rất nhiều sự kiện, nó được code và chờ người dùng làm một cái gì đó kích hoạt sự kiện,
cái này người ta gọi là sự kiển chủ động được kích hoạt bởi người sử dụng ứng dụng đó
ngoài ra còn có sự kiện bị động ví dụ như các bạn có 1 ứng dụng báo thức, tới một thời gian nào đó
mà các bạn đã hẹn thì nó tự kích hoạt play đoạn nhạc báo thức
hoặc cũng do một vài sự kiện khác nữa do chính chúng ta thiết lập (code) cho nó
Tuy nhiên trong bài tập hôm nay Long sẽ chỉ giới thiệu phần sự kiện chủ động (do người dùng kích hoạt) thôi
-Hầu hết các đối tượng trong android Button, TextView, EditText, ImageView, ( nhiều đối tượng khác nữa các bạn tự tìm hiểu) sẽ có chung các sự kiện sau đây
1) Sự kiện onClickListener():
Là sự kiện lắng nge một cái click lên đối tượng đó,
code ví dụ như sau:
Button nut2; //Khai báo biến
nut2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Bạn vừa click",Toast.LENGTH_SHORT).show();
public boolean onLongClick(View arg0) {
AlertDialog myAlertDialog = taoMotAlertDialog();
myAlertDialog.show();
return false;
}
});
Trang 173) Sự kiện OnFocusChangeListener() khi có một cái gì đó thay đổi, ví dụ như setText() mới, sự kiện này sẽ kích hoạt - đây là 1 sự kiện bị động
nut2.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
//Làm cái gì hay xử lý code một vấn đề nào đó
}
});
4) Sự kiện OnTouchListener() là sự kiện chạm vào đối tượng lưu ý sự kiện này khác với
OnClickListenner nhé
Lưu ý sự kiện này còn chia ra nhỏ trong nó như sau:
- MotionEvent.ACTION_DOWN: Lắng nghe khi bạn vừa nhấn xuống
- MotionEvent.ACTION_UP: Lắng nghe khi bạn vừa thả nút ra
- MotionEvent.ACTION_MOVE: Lắng nghe khi bạn vừa đè xuống vừa di chuyển
- Ngoài ra còn nhiều sự kiện con khác nữa các bạn tự tìm hiểu nhé, như là :
text.setText("Bạn vừa nhấn xuống TextView này!");
}else if(arg1.getAction() == MotionEvent.ACTION_UP){
text.setText("Bạn vừa đưa ngón tay ra khỏi TextView này!");
}else if(arg1.getAction() == MotionEvent.ACTION_MOVE){
text.setText("Bỏ cái ngón tay ra, kéo kéo cái gì!");
Trang 18trong phần implement của Activity tít chọn hàm onKeyDown() rồi ok
sau đó bạn định nghĩa lại
các nút vật lý trên thiết bị gồm có rất nhiều như nút Menu, Back, Volume+, Volume-, Home, Search, Nút A,B,C,D nói chung là rất nhiều nút vật lý khác (một số thiết bị android có bàn phím cứng).Tuy nhiên riêng 2 nút Home và Search thì ra hiện tại khó có thể can thiệp được, muốn định nghĩa lại hoàn toàn 2 nút này chúng ta phải hiểu rõ các "cờ" cho phép của android, xử lý vấn đề này Long sẽ có
1 bài viết trên mục "Lập trình nâng cao android" các bạn chú ý theo dõi nhé!
Sau đây là đoạn code ví dụ cho cái này:
}else if ((keyCode == KeyEvent.KEYCODE_MENU)) {
text.setText("Bạn vừa bấm nút MENU!");
return true;
}else if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
text.setText("Bạn vừa bấm nút VOLUME+");
return true;
}else if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
text.setText("Bạn vừa bấm nút VOLUME-");
return true;
Trang 19}
return super.onKeyDown(keyCode, event);
}
Sau đây là topic hướng dẫn làm một ứng dụng demo về các sự kiện
các bạn chú ý đọc hiểu rồi làm theo nha, làm không được rồi hẳn tải project về xem!
http://android.vn/threads/24466
-Hôm nay ko có bài tập ^^ tuy nhiên nếu bạn nào rãnh hãy thử tìm hiểu xem làm thế nào để khi click vào nút search và nút hôm trên thiết bị (máy ảo lẫn máy thật) có thể bắn lên được 1 cái Toast nhé!ngày học tiếp theo sẽ thảo luận về cái này!
Bài hôm nay kết thúc nhé ^^!
Bài 9
Phần 1 : Permisson là gì?
Đơn giản dễ hiểu đúng như cái ý nghĩa của nó dịch ra từ tiếng anh là "cho phép"
cho phép ở đây hiểu rõ hơn là android sẽ có một vài quyền, và để xin được quyền đó cho ứng dụng của bạn, bạn phải đăng ký quyền này, hiểu là bạn muốn dùng súng phải lên công an đăng ký giấy phép vậy :D
Vậy đăng ký permission như thế nào? nằm ở đâu trong trong ứng dụng?
Để đăng ký permission bạn phải vào đăng ký ở trong AndroidManifest.xml
câu lệnh đăng ký như sau:
<uses-permission android:name="android.permisson.BIND_APPWIDGET" />
vị trí đặt câu lệnh nằm giữa cặp thẻ <uses-sdk > và <application >
-ví dụ đơn giản sau: trong demo sử dụng đối tượng WebView để load 1 trang web
ta phải đăng ký với hệ điều hành android cấp quyền thiết lập intenet
<uses-permission android:name="android.permission.INTERNET" />
mới có thể truy cập vào website đó
-Sau đây Long sẽ giới thiệu các permission trong android
Các cờ này sẽ cho phép các quyền gì đó
các bạn phải chú ý đọc sơ qua ít nhất 1 lần nhé vì sau này khi lập trình ứng dụng android
chúng ta sẽ vô tình gặp cái gì đó phải xin phép từ một trong số các quyền này
dó nội dụng khá nhiều nên mời các bạn theo dõi topic sau
Trang 20
-Phần 2: Android Multi - Thread
cái này đúng là là phần trong java code nhưng trong android cũng có đối tượng liên quan và đối tượng này cũng thường xuyên sử dụng
Mult-iThread là gì? đơn giản là đa luồng, do thời gian hạn chế nên hình ảnh minh họa về vấn đề này Long sẽ đăng lên topic và share link cho các bạn vào cuối bài học
Luồng ở đây là một đơn vị thực hiện đồng thời
Đa luồng là một phương pháp "giả tạo" các lệnh thực thi cùng một lúc (ít nhất là trong thời điểm hiện tại) giúp cho người dùng có cảm giác chương trình thực thi nhanh hơn Về mặt lập trình thì nó giúp chuơng trình thực thi nhiều tác vụ có thể coi như đồng thời, nhờ đó ứng dụng vẫn có thể tuơng tác tốt với người dùng trong khi đang bận làm 1 việc gì đó Giống như 1 người vừa học, vừa nghe nhạc, vừa làm nhiều cái khác trong 1 thời điểm
Trong ứng dụng android, ta có thể khởi chạy đa luông bất cứ lúc nào mà chúng ta muốn (sau một sự kiện hoặc do một sự kiện nào đó tự kích hoạt …)
Thường thì sẽ có 1 luồng chính và nhiều luồng phụ
chạy song song đồng thời và lúc nào đó các luồng phụ sẽ can thiệt vào luồng chính thông qua các biến toàn cục
Về cơ bản có 2 cách chính để thực thi luồng (Thread) trong một đoạn code của ứng dụng
- Tạo 1 class mới có kế thừa (extends) Thread và nạp chồng (override - viết lại, định nghĩa lại) hàm (function) run()
- Khởi tạo 1 đối tượng mới là thể hiện một luồng thông qua đối tượng Runnable
Cả 2 cách này đếu có 1 điểm chung là gọi phương thức start() để bắt đầu thực thi luồng mới tạo này
* Ưu điểm của đa luồng:
1 Mỗi luồng có thể dùng chung và chia sẻ nguồn tài nguyên trong quá trình chạy, nhưng có thể thực hiện một cách độc lập
2 Ứng dụng trách nhiệm có thể được tách
• Luồng chính chạy giao diện người dung
• Các luồng phụ nhiệm gửi đến luồng chính
3 Luồng mang tính chất trừu tượng
4 Một chương trình đa luồng hoạt động nhanh hơn trên máy tính có cấu hình tốt và mạnh
* Nhược điểm của đa luồng:
Càng nhiều luồng thì xử lý càng phức tạp
Cần phát hiện tránh các luồng chết, luồng chạy mà không làm gì trong ứng dụng cả
[10/15/2013 8:44:20 PM] duytinhit: hết chưa hả L ơi?
[10/15/2013 8:44:39 PM] thanh long: đang nghiên cứu ra bài tập
Trang 21[10/15/2013 8:44:51 PM] duytinhit: :)
[10/15/2013 8:46:25 PM] thanh long:
-Luồng và giao diện người dùng sử dụng:
- Luồng tuyệt đối không được tương tác với giao diện người dùng
Chào các bạn hôm nay Long sẽ giới thiệu về tập tin, xử lý file trong lập trình android
1) Giới thiệu tập tin:
File là một tập tin đơn giản là 1 tập tin có đuôi là txt hay một tập tin hình ảnh âm thanh …
Android sử dụng và xử lý các tập tin tương tự như trong một cấu trúc của java
Tập tin có thể lưu trữ trên bộ nhớ chính của một thiết bị (nhỏ) hoặc là lưu trữ trên một dung lượng lớn hơn là SD Card Ngoài ra chúng có còn có thể được lưu trên mạng intenet
Tập tin được lưu trữ trong bộ nhớ của thiết bị hoặc nguồn của 1 ứng dụng nào đó (tương tự cùng với các tập tin âm thanh, nhạc, video …) Và chúng ta gọi nó là nguồn của tập tin
2) Nhắc lại vài cách lưu trữ dữ liệu của các bạn:
- SharedPreferences: Lưu trữ dữ liệu theo cách nguyên thủy dựa theo kiểu (key/value)
- Internal Storage: Dữ liệu được lưu trữ 1 cách riêng tư trên bộ nhớ thiết bị
- External Storage: Dữ liệu được lưu trữ 1 cách công khai và có thể được chia sẻ ra bên ngoài
- SQLite Database: Lưu trữ dữ liệu theo cấu trúc trên cơ sở dữ liệu
- Network Connection: Lưu trữ dữ liệu trên web với một kết nối tới server
(Tất cả các kiểu lưu trữ trên sau này Long sẽ hướng dẫn chi tiết và kỹ hơn)
3) Một ví dụ đơn giản lấy dữ liệu từ một tập tin có tên “file.txt” trong hiển thị trong ứng dụng:
“file.txt” trong thư mục “SD Card của thiết bị”, khi bấm nút xem thì hiển thị dòng chữ trong tập tin
“file.txt” ra TextView Giao diện bố trí tùy các bạn!