Tìm hiểu lập trình android cần biết

Go down

Tìm hiểu lập trình android cần biết Empty Tìm hiểu lập trình android cần biết

Bài gửi by t11nguyen 29/6/2017, 11:13

Trong phần này chúng ta tiếp tục tìm hiểu một số lớp View cơ bản là ProgressBar và ListView.

ProgressBar
ProgressBar hiển thị một thanh ngang hoặc một hình tròn biểu diễn tiến trình hoạt động của một hành động nào đó.
Dành cho bạn nào tìm hiểu về https://vietpro.net.vn/hoc-json
Ví dụ 1:
Chúng ta sẽ thiết kế một ProgressBar và một TextView hiển thị tiến trình hoạt động theo %.

main.xml
Trong file main.xml chúng ta thiết kế một thẻ ProgressBar và một TextView. Thuộc tính style quy định kiểu “vẽ” của ProgressBar lên màn hình, ở đây progressBarStyleHorizontal nghĩa là vẽ kiểu thanh ngang. Mặc định thì ProgressBar sẽ vẽ theo kiểu hình tròn.

MainActivity.java
Chúng ta sẽ điều khiển tiến trình hoạt động của ProgressBar trong một luồng khác.

1
new Thread(myThread).start();
Ở đây chúng ta sử dụng một luồng khác để thực hiện công việc tính toán, còn luồng chính sẽ cập nhật ProgressBar, lý do sử dụng 2 luồng khác nhau là để chúng có thể chạy song song với nhau.


Công việc tính toán ở đây chỉ đơn giản là tăng giá trị của một biến từ 0 đến 100, mỗi lần tăng thì nghỉ 100 mili giây.

Cơ chế của hệ điều hành Android có hơi khác các hệ điều hành khác là những biến nào được khai báo trong một Activity chỉ có thể truy xuất được trong Activity đó, biến myThread tuy thuộc lớp Activity chính nhưng thực chất nó chạy một luồng của riêng nó, không chạm gì tới Activity chính cả, do đó chúng ta không thể thao tác trực tiếp với các biến prg hay biến TextView tv bên trong phương thức run() được. Để có thể thao tác với các biến của một đối tượng Activity từ một luồng khác, chúng ta phải gọi chúng bên trong phương thức runOnUiThread() hoặc bên trong một đối tượng Handler.

Biến thuộc luồng nào thì chỉ có thể truy xuất được từ luồng đó, ở đây chúng ta chỉnh sửa biến tvnên chúng ta truy xuất nó bên trong phương thức runOnUiThread().

Như đã nói, ngoài cách dùng phương thức runOnUiThread(), chúng ta cũng có thể truy xuất các biến đó thông qua một đối tượng Handler. Ở đây chúng ta cập nhật biến prg và thiết lập giá trị của biến đó cho ProgressBar.
Ví dụ 2:
Trong ví dụ này, chúng ta sẽ hiển thị ProgressBar ở dạng hình tròn.

main.xml

Ở đây chúng ta không thiết lập biến style cho ProgressBar nữa và như thế ProgressBar sẽ hiển thị hình tròn thay vì thanh ngang. Ngoài ra TextView cũng không hiển thị số % tiền trình hoạt động nữa nên chúng ta thiết lập “cứng” thuộc tính text luôn.

MainActivity.java

Đoạn code trong file MainActivity.java cũng tương tự như ví dụ trước.

Chỉ khác là ở đây chúng ta không cập nhật text cho TextView theo % mà chỉ canh khi nào tiến trình hoàn tất thì mới cập nhật thôi. Ngoài ra sau khi hoàn tất công việc, chúng ta cho ẩn ProgressBar đi bằng phương thưc setVisibility().

Tìm hiểu về lập trình, hướng dẫn https://vietpro.net.vn/hoc-html-va-css
ListView
ListView hiển thị dữ liệu dưới dạng một danh sách các item, chúng ta có thể dùng tay cuộn danh sách lên xuống nếu danh sách quá dài. ListView sử dụng dữ liệu được cung cấp bởi lớp Adapter.

Ví dụ 1:
main.xml


android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<>
android:id="@+id/lvId"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />


Trong file main.xml chúng ta khai báo một thẻ ListView.

row.xml
File row.xml sẽ định nghĩa cách các hàng trong ListView được hiển thị như thé nào, ví dụ như các hàng có độ lớn bao nhiêu, kích cỡ chữ bao nhiêu. Ở đây sp là đơn vị dùng cho kích thước font trong Android.

strings.xml



MainActivity

Python
Java
Ruby
C++

Trong file strings.xml chúng ta định nghĩa các item sẽ được dùng cho ListView trong biến string-array.

MainActivity.java
Trong file MainActivity.java chúng ta kết nối tất cả những thứ trên lại với nhau.
Lớp ArrayAdapter có nhiệm vụ kết nối file row.xml, dữ liệu trong mảng languages vào đối tượng ListView.Ví dụ 2:
Trong ví dụ này chúng ta sử dụng lớp ListActivity thay cho lớp Activity thường. Lớp ListActivity là lớp Activity nhưng có sẵn một đối tượng ListView. Bởi vì ListView rất thường được dùng để hiển thị riêng trong một màn hình Activity, do đó Android cho ra đời lớp ListActivity để đơn giản hóa việc thiết kế cho các coder. Cũng chính vì vậy ở đây chúng ta cũng sẽ không dùng đến file main.xml để thiết kế.


File row.xml định nghĩa cách ListView hiển thị, giống như ví dụ trước.

strings.xml


MainActivity

File strings.xml chỉ lưu tiêu đề của ứng dụng chứ không còn lưu danh sách các item nữa.

MainActivity.java

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.TextView;
Thay vào đó chúng ta sẽ thiết kế các item cho ListView trong Java. Ngoài ra chúng ta bắt sự kiện click vào item trên ListView nữa.

public class MainActivity extends ListActivity
implements OnItemClickListener, OnItemSelectedListener
Lớp MainActivity giờ đây sẽ kế thừa lớp ListActivity và implement 2 giao diện là OnItemClickListener và OnItemSelectedListener, tổng cộng có 3 phương thức trừu tượng cần được code.

Ở đây phương thức onCreate() sẽ không có dòng setContentView() vì mặc định lớp ListActivityđã có sẵn View của riêng nó là ListView rồi, ListView này có kích thước phủ toàn bộ màn hình.

ArrayAdapter la = new ArrayAdapter(this, R.layout.row);
la.add("Python");
la.add("Java");
la.add("Ruby");
la.add("C++");
Chúng ta tạo đối tượng ArrayAdapter như bình thường để truyền dữ liệu vào ListView.


1
setListAdapter(la);
Phương thức setListAdapter() sẽ gắn dữ liệu của đối tượng Adapter với đối tượng ListView.

Giao diện OnItemClickListener có phương thức trừu tượng là onItemClick(), ở đây chúng ta làm công việc là thiết lập đoạn text trên thanh tiêu đề là text của item được click.

Có nên https://vietpro.net.vn/hoc-lap-trinh-web-php-co-ban
Giao diện OnItemSelectedListener có 2 phương thức trừu tượng, tuy nhiên chúng ta chỉ code phương thức onItemSelected() thôi, ở đây chúng ta cũng chỉ đơn giản là thiết lập lại tiêu đề của ứng dụng bằng tiêu đề của item được chọn trong ListView.

t11nguyen
Binh Nhất
Binh Nhất

Tổng số bài gửi : 36
Tuổi : 35
Đăng ký ngày : 22/04/2017
Danh tiếng : 0

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết