Pages - Menu

Thứ Năm, 2 tháng 6, 2016

Creating URL in Android

There are two ways to create a URL :

-The first way : Using Uri.Builder class

 Let's say that i want to create the following URL :
https://www.myawesomesite.com/turtles/types?type=1&sort=relevance#section-name
Uri.Builder builder = new Uri.Builder();
builder.scheme("https").
           authority("www.myawesomesite.com").
           appendPath("turtles").
           appendPath("types").
           appendQueryParameter("type","1").
           appendQueryParameter("sort","relevance").
           fragment("section-name");
URL myUrl = new URL(builder.build().toString);

-The second way : when we just need to append/add variables to the available URL

          http://api.example.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7

To build the Uri you can even use this :

final String FORECAST_BASE_URL = "http://api.example.org/data/2.5/forecast/daily?"; 
final String QUERY_PARAM = "q"; 
final String FORMAT_PARAM = "mode";
final String UNITS_PARAM = "units"; 
final String DAYS_PARAM = "cnt";

You can declare all this the above way or even inside the Uri.parse() and appendQueryParameter()

Uri builtUri = Uri.parse(FORECAST_BASE_URL) .buildUpon()
                         .appendQueryParameter(QUERY_PARAM, params[0])                                                                    .appendQueryParameter(FORMAT_PARAM, "json")                                                                      .appendQueryParameter(UNITS_PARAM, "metric")                                                                       .appendQueryParameter(DAYS_PARAM, Integer.toString(7)) .build();
At last :

URL url = new URL(builtUri.toString());

Source : http://stackoverflow.com/questions/19167954/use-uri-builder-in-android-or-create-url-with-variables
Đọc tiếp »

Chủ Nhật, 29 tháng 5, 2016

Sự khác nhau giữa StringBuilder và StringBuffer

-StringBuffer: Một đối tượng StringBuffer có thể chỉnh sửa được, như thay đổi nội dung hay độ dài. StringBuffer là một Thread safe , có nghĩa là synchronize(đồng bộ hóa) trong trường hợp nhiều threads khác nhau cùng sử dụng một StringBuffer object vào cùng một thời điểm thì sẽ chỉ có từng thread được truy cập đến StringBuffer object và khi nào thread đó sử dụng xong thì những threads khác mới được sử dụng tiếp theo lần lượt.(Đây gọi là Thread safe).

-StringBuilder : StringBuilder cũng giống như StringBuffer là có thể chỉnh sửa được nội dung,nhưng khác nhau ở điểm StringBuilder không phải là Thread safe , có nghĩa nó là asynchronous . Khi nhiều threads sử dụng một StringBuilder object cùng một thời điểm có thể gây ra các vấn đề khác nhau.

Note :  Những  hàm hay đối tượng nào là Thread Safe thì khi có nhiều threads khác nhau sử dụng nó chỉ cho phép sử dụng hàm hay đối tượng đồng bộ nghĩa là chỉ lần lượt từng thread sử dụng hàm hay đối tượng chứ không được phép sử dụng cùng lúc.

Note : Chỉ khi nào cần sử dụng nhiều threads thì mới sử dụng StringBuffer, còn nếu sử dụng singled thread thì nên sử dụng StringBuilder sẽ nhanh hơn.
Đọc tiếp »

Thứ Sáu, 13 tháng 5, 2016

Tạo Context Menu trong Android Studio


Ở bài trước mình đã hướng dẫn cách để tạo một OptionMenu và  trong bài này mình sẽ hướng dẫn các bạn cách tạo ra một Context Menu (Menu ngữ cảnh) trong Android như thế nào.

- ContextMenu là một trong những công cụ rất hữu ích do Android cung cấp , khác với OptionMenu thì chúng ta cần phải đăng ký ContextMenu cho những đối tượng mà khi nhấn và giữ lâu(long-click) vào đối tượng đó thì ContextMenu sẽ được tạo ra và hiển thị.

- Trong bài này mình sẽ tạo một ContextMenu hiển thị khi long-click vào TextView để đổi màu chữ.
Đầu tiên tạo file xml giao diện như thế này : 



- Sau đó các bạn tạo một file menu resource trong thư mục res->menu (ở đây mình tạo file menu tên mycontextmenu.xml). Tạo các items tương ứng với các màu muốn đổi : 



- Sau  khi menu rồi chúng ta chuyển qua MainActivity.java để đăng ký ContextMenu cho TextView vừa tạo ra và thực hiện sự kiện onCreateContextMenu() để tùy chỉnh lại menu đó :





-  Dùng hàm getMenuInflater() để tạo ra một MenuInflater, sau đó inflate(R.menu.mymenucontext, menu) tham số thứ nhất là file menu resource chúng ta đã tạo trong thư mục res-menu , tham số thứ hai là ContextMenu được tao ra khi long-click vào TextView. 

-Tiếp theo ta gán sự kiện OnContextItemSelected() để đổi màu chữ khi click vào các Items.




- Hàm onContextItemSelected() có một tham số là Item được click, dùng hàm getItemId() để lấy ra Id của Item đó và ta dùng Switch/case để so sánh tìm xem Item được click là Item nào và dùng hàm setTextColor() để đổi màu chữ.

- Sau khi hoàn thành chúng ta sẽ tạo được menu thế này khi long-click vào TextView.


- Chọn Item BLUE chữ đổi sang màu xanh!



Vậy là chúng ta đã tạo xong một ContextMenu trong Android rất đơn giản. Good Look!
Đọc tiếp »

Thứ Năm, 12 tháng 5, 2016

Hướng dẫn tạo Options Menu trong Android Studio



Menu trong android rất hữu ích trong việc giúp người dùng tương tác với ứng dụng tốt hơn, có 3 loại menu chính là : OptionMenu, ContextMenu PopupMenu. Trong bài viết này mình sẽ hướng dẫn các bạn tạo ra một OptionMenu....
Đọc tiếp »