Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences. Show
Xác định trạng thái vị trí layout màn hình đứng hay ngang và nhận góc xoay hiện tại của thiết bị Android
Để xác định được trạng thái Layout màn hình sử dụng lớp Display với phương thức getDefaultDisplay(). Trong Activity lấy được Display với mã sau: Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay();Có được Display có thể biết trạng thái xoay Layout hiện tại với phương thức getRotation(), ví dụ: switch (display.getRotation()) { case Surface.ROTATION_0: huongmanhinh.setText("Màn hình LAYOUT đứng: 0°"); break; case Surface.ROTATION_90: huongmanhinh.setText("Màn hình LAYOUT ngang: 90°"); break; case Surface.ROTATION_180: huongmanhinh.setText("Màn hình LAYOUT ngang: 180°"); break; case Surface.ROTATION_270: huongmanhinh.setText("Màn hình LAYOUT đứng: 270°"); break; }Nhận thông tin khi góc nghiêng điện thoại thay đổiKhi xoay điện thoại, cảm biến góc nghiêng sẽ cho biết độ nghiêng của điện thoại, muốn nhận sự kiện này hãy sử dụng OrientationEventListener, ví dụ: OrientationEventListener myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { @Override public void onOrientationChanged(int i) { //i là góc nghiêng } }; myOrientationEventListener.enable();Ví dụTạo một Activity có tên Orientation, hiện thị thông tin góc xoay màn hình, trạng thái Layout activity_orientation.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="net.xuanthulab.appbarexample.Orientation"> <LinearLayout android:padding="5dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:textSize="20sp" android:id="@+id/huongmanhinh" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:textSize="20sp" android:id="@+id/gocnghieng" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.constraint.ConstraintLayout>Orientation.java public class Orientation extends AppCompatActivity { Display display; TextView huongmanhinh, gocnghieng; OrientationEventListener myOrientationEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_orientation); huongmanhinh = findViewById(R.id.huongmanhinh); gocnghieng = findViewById(R.id.gocnghieng); InfoScreen(); ListenerRotate(); } //Listener nhận sự kiện thay đổi góc nghiêng điện thoại void ListenerRotate() { myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { @Override public void onOrientationChanged(int i) { gocnghieng.setText("Góc nghiêng: "+i+"°"); InfoScreen(); } }; myOrientationEventListener.enable(); } /** * Xác định màn hình PORTRAIT, LANDSCAPE */ void InfoScreen() { Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay(); switch (display.getRotation()) { case Surface.ROTATION_0: huongmanhinh.setText("Màn hình LAYOUT đứng: 0°"); break; case Surface.ROTATION_90: huongmanhinh.setText("Màn hình LAYOUT ngang: 90°"); break; case Surface.ROTATION_180: huongmanhinh.setText("Màn hình LAYOUT ngang: 180°"); break; case Surface.ROTATION_270: huongmanhinh.setText("Màn hình LAYOUT đứng: 270°"); break; } } }
Trình chỉnh sửa bố cục cho phép bạn nhanh chóng tạo bố cục bằng cách kéo các phần tử giao diện người dùng vào một trình chỉnh sửa thiết kế trực quan thay vì viết XML bố cục theo cách thủ công. Trình chỉnh sửa thiết kế giúp bạn xem trước bố cục của mình trên các thiết bị và phiên bản Android khác nhau. Bạn có thể linh động thay đổi kích thước để đảm bảo bố cục hoạt động tốt trên các màn hình với kích thước khác nhau. Trình chỉnh sửa bố cục đặc biệt hiệu quả khi xây dựng bố cục với ConstraintLayout, một trình quản lý bố cục tương thích với Android 2.3 (API cấp 9) trở lên. Trang này cung cấp thông tin tổng quan về Trình chỉnh sửa bố cục. Để tìm hiểu thêm về những nguyên tắc cơ bản về bố cục, hãy xem trang Bố cục. Giới thiệu về Trình chỉnh sửa bố cụcTrình chỉnh sửa bố cục xuất hiện khi bạn mở một tệp bố cục XML.
Khi mở tệp bố cục XML, Trình chỉnh sửa thiết kế sẽ mở theo mặc định, như minh hoạ trong hình 1. Để chỉnh sửa XML của bố cục trong trình chỉnh sửa văn bản, hãy nhấp vào nút Mã ở góc trên cùng bên phải của cửa sổ. Lưu ý rằng các cửa sổ Bảng thành phần hiển thị, Cây thành phần và Thuộc tính không có sẵn trong khi chỉnh sửa bố cục của bạn trong chế độ xem Mã.Mẹo: Bạn có thể chuyển đổi giữa trình chỉnh sửa thiết kế và trình chỉnh sửa văn bản bằng cách nhấn vào Alt + Shift + Right/Left arrow (Control + Shift + Right/Left arrow trên máy Mac). Thay đổi hình dáng xem trướcCác nút trong hàng trên cùng của trình chỉnh sửa thiết kế cho phép bạn định điều chỉnh hình dạng bố cục trong trình chỉnh sửa. Tương ứng với các con số trong Hình 2, các nút có sẵn như sau:
Tạo bố cục mớiKhi thêm bố cục mới cho ứng dụng, trước tiên, hãy tạo tệp bố cục mặc định trong thư mục layout/ mặc định của dự án để tệp đó được áp dụng cho tất cả cấu hình thiết bị. Sau khi có bố cục mặc định, bạn có thể tạo các biến thể bố cục cho các cấu hình thiết bị cụ thể, chẳng hạn như đối với màn hình lớn. Bạn có thể tạo bố cục mới theo một trong những cách sau:
Sử dụng chế độ xem Dự án
Sử dụng chế độ xem Android
Sử dụng Trình quản lý tài nguyên (Resource Manager)Sử dụng các biến thể bố cục để tối ưu hoá cho các màn hình khác nhauBiến thể bố cục là phiên bản thay thế của một bố cục hiện có được tối ưu hoá cho một kích thước màn hình hoặc hướng màn hình nhất định. Sử dụng biến thể bố cục được đề xuấtTrong Android Studio có các biến thể bố cục phổ biến mà bạn có thể sử dụng trong dự án. Để sử dụng một biến thể bố cục được đề xuất, hãy làm như sau:
Tạo biến thể bố cục của riêng bạnNếu muốn tạo biến thể bố cục của riêng mình, hãy làm như sau:
Khi có nhiều biến thể của cùng một bố cục, bạn có thể chuyển đổi giữa các biến thể đó bằng cách nhấp vào Biến thể bố cục (Layout Variants) và chọn từ danh sách sẽ xuất hiện.Để biết thêm thông tin về cách tạo bố cục cho các màn hình khác nhau, hãy xem phần Hỗ trợ các kích thước màn hình khác nhau. Chuyển đổi thành phần hiển thị hoặc bố cụcBạn có thể chuyển đổi một thành phần hiển thị sang loại thành phần hiển thị khác và có thể chuyển đổi một bố cục sang một loại bố cục khác.
Chuyển đổi bố cục thành ConstraintLayoutĐể cải thiện hiệu năng bố cục, bạn nên chuyển đổi các bố cục cũ thành ConstraintLayout. ConstraintLayout sử dụng hệ thống bố cục dựa trên ràng buộc cho phép bạn tạo hầu hết các bố cục mà không cần bất kỳ nhóm thành phần hiển thị lồng nhau nào. Để chuyển đổi một bố cục hiện có thành một ConstraintLayout, hãy làm như sau:
Để tìm hiểu thêm về ConstraintLayout, hãy xem phần Tạo Giao diện người dùng thích ứng với ConstraintLayout. Tìm các mục trong Bảng thành phần hiển thịĐể tìm kiếm một thành phần hiển thị hoặc nhóm thành phần hiển thị theo tên trong Bảng thành phần hiển thị (Palette), hãy nhấp vào nút Tìm kiếm (Search) ở đầu bảng. Ngoài ra, bạn có thể nhập tên của mục bất cứ khi nào cửa sổ Bảng thành phần hiển thị (Palette) chọn tâm điểm.Bạn có thể tìm thấy các mục thường dùng trong danh mục Phổ biến (Common) ở Bảng thành phần hiển thị (Palette). Để thêm một mục vào danh mục này, hãy nhấp chuột phải vào một thành phần hiển thị hoặc nhóm thành phần hiển thị trong Bảng thành phần hiển thị (Palette), sau đó nhấp vào Mục yêu thích (Favorite) trong trình đơn theo bối cảnh. Mở tài liệu từ Bảng thành phần hiển thịĐể mở tài liệu tham khảo dành cho nhà phát triển Android của một thành phần hiển thị hoặc nhóm thành phần hiển thị, hãy chọn thành phần giao diện người dùng trong Bảng thành phần hiển thị (Palette) và nhấn vào Shift + F1. Để xem tài liệu về Nguyên tắc quan trọng của một thành phần hiển thị hoặc nhóm thành phần hiển thị, hãy nhấp chuột phải vào phần tử giao diện người dùng trong Bảng thành phần hiển thị (Palette) và chọn Nguyên tắc quan trọng (Material Guidelines) từ trình đơn theo bối cảnh. Nếu không có mục cụ thể nào đang sẵn có, thì trang chủ Tài liệu về Nguyên tắc quan trọng sẽ được mở. Thêm thành phần hiển thị vào bố cụcĐể bắt đầu tạo bố cục, bạn chỉ cần kéo các thành phần hiển thị hoặc nhóm thành phần hiển thị từ Bảng thành phần hiển thị vào trình chỉnh sửa thiết kế. Khi bạn đặt một thành phần hiển thị trong bố cục, trình chỉnh sửa thiết kế sẽ hiển thị thông tin về mối quan hệ của thành phần đó với phần còn lại của bố cục. Nếu đang sử dụng ConstraintLayout, bạn có thể tự động tạo các quy tắc ràng buộc bằng cách sử dụng các tính năng Giới hạn dự đoán và Tự động kết nối (Infer Constraints and Autoconnect). Chỉnh sửa thuộc tính của thành phần hiển thị
Bạn có thể chỉnh sửa các thuộc tính của thành phần hiển thị từ cửa sổ Thuộc tính (Attributes) ở bên phải của Trình chỉnh sửa bố cục. Cửa sổ này chỉ sử dụng được khi trình chỉnh sửa thiết kế đang mở, vì vậy hãy đảm bảo bạn đang sử dụng chế độ Thiết kế hoặc Phân tách để xem bố cục của mình. Khi bạn chọn một thành phần hiển thị, cho dù bằng cách nhấp vào thành phần hiển thị đó trong Cây thành phần hay trong trình chỉnh sửa thiết kế, cửa sổ Thuộc tính sẽ hiển thị các thông tin sau, như đã nêu trong hình 4:
Thêm dữ liệu mẫu vào thành phần hiển thị của bạnVì nhiều bố cục Android dựa vào dữ liệu thời gian chạy, nên có thể khó hình dung giao diện của bố cục khi thiết kế ứng dụng. Trong Android Studio 3.2 trở lên, bạn có thể thêm dữ liệu xem trước mẫu vào TextView, ImageView hoặc RecyclerView trong Trình chỉnh sửa bố cục. Lưu ý: Khi thêm dữ liệu mẫu vào View, Android Studio sẽ thực hiện các thay đổi đối với dự án của bạn như thể bạn đang sử dụng dữ liệu của riêng mình. Sau đó, bạn có thể sửa đổi các thay đổi này nếu cần.Bạn có thể nhấp chuột phải vào một trong các kiểu thành phần hiển thị này và chọn Thiết lập dữ liệu mẫu (Set Sample Data) để hiển thị cửa sổ Thuộc tính thành phần hiển thị trong thời gian thiết kế, như minh hoạ trong hình 5. Hình 5. Cửa sổ Thuộc tính thành phần hiển thị trong thời gian thiết kế (Design-time View Attributes) Trong TextView, bạn có thể chọn trong các danh mục văn bản mẫu. Khi sử dụng văn bản mẫu, Android Studio sẽ điền dữ liệu mẫu đã chọn vào thuộc tính text của TextView. Xin lưu ý rằng bạn chỉ có thể chọn văn bản mẫu thông qua cửa sổ Thuộc tính thành phần hiển thị trong thời gian thiết kế khi thuộc tính text trống. Hình 6. TextView với dữ liệu mẫu Trong một ImageView, bạn có thể chọn giữa các hình ảnh mẫu khác nhau. Khi bạn chọn một hình ảnh mẫu, Android Studio sẽ điền thuộc tính tools:src của ImageView (hoặc tools:srcCompat nếu sử dụng Thư viện hỗ trợ). Hình 7. ImageView với dữ liệu mẫu Trong một RecyclerView, bạn có thể chọn trong một bộ gồm các biểu mẫu chứa hình ảnh và văn bản mẫu. Khi sử dụng các biểu mẫu này, Android Studio sẽ thêm một tệp vào thư mục res/layout. Tệp này là recycler_view_item.xml, chứa bố cục dành cho dữ liệu mẫu. Android Studio cũng thêm siêu dữ liệu vào RecyclerView để hiển thị chính xác dữ liệu mẫu. Hình 8. RecyclerView với dữ liệu mẫu Hiển thị lỗi và cảnh báo về bố cụcTrình chỉnh sửa bố cục sẽ thông báo cho bạn mọi vấn đề về bố cục bên cạnh thành phần hiển thị tương ứng trong Cây thành phần bằng cách sử dụng biểu tượng dấu chấm than trong vòng tròn màu đỏ để báo lỗi hoặc biểu tượng dấu chấm than trong tam giác màu cam để cảnh báo. Nhấp vào biểu tượng để xem thêm chi tiết.Để xem tất cả các vấn đề đã biết trong cửa sổ bên dưới trình chỉnh sửa, hãy nhấp vào Hiển thị cảnh báo và lỗi (Show Warnings and Errors) ( hoặc ) trên thanh công cụ.Tải xuống và áp dụng phông chữ cho văn bảnKhi sử dụng Android 8.0 (API cấp 26) hoặc Thư viện hỗ trợ Android 26.0.0 trở lên, bạn có thể lựa chọn trong số hàng trăm phông chữ bằng cách làm theo những bước sau:
|