Kể từ API 11, kéo và thả chế độ xem vào các chế độ xem hoặc nhóm xem khác được hỗ trợ. Khung bao gồm ba thành phần quan trọng sau để hỗ trợ chức năng kéo và thả
![]() |
| Khóa học lập trình Android |
Kéo lớp sự kiện .
Kéo người nghe .
Các phương thức và lớp trợ giúp .
Quá trình kéo / thả
Về cơ bản có bốn bước hoặc trạng thái trong quy trình kéo và thả
Bắt đầu - Sự kiện này xảy ra khi bạn bắt đầu kéo một mục trong bố cục, ứng dụng của bạn gọi phương thức startDrag () để báo cho hệ thống bắt đầu kéo. Các đối số bên trong phương thức startDrag () cung cấp dữ liệu được kéo, siêu dữ liệu cho dữ liệu này và gọi lại để vẽ bóng kéo.
Trước tiên, hệ thống sẽ phản hồi bằng cách gọi lại ứng dụng của bạn để lấy bóng kéo. Sau đó nó sẽ hiển thị bóng kéo trên thiết bị.
Tiếp theo, hệ thống sẽ gửi một sự kiện kéo với loại hành động ACTION_DRAG_STARTED cho người nghe sự kiện kéo đã đăng ký cho tất cả các đối tượng Xem trong bố cục hiện tại.
Để tiếp tục nhận các sự kiện kéo, bao gồm cả sự kiện thả có thể xảy ra, trình nghe sự kiện kéo phải trả về true , Nếu trình nghe sự kiện kéo trả về false, thì nó sẽ không nhận các sự kiện kéo cho hoạt động hiện tại cho đến khi hệ thống gửi sự kiện kéo với loại hành động HÀNH ĐỘNG_DRAG_ENDED.
Tiếp tục - Người dùng tiếp tục kéo. Hệ thống gửi hành động ACTION_DRAG_ENTERED theo sau là hành động ACTION_DRAG_LOCATION đến trình nghe sự kiện kéo đã đăng ký cho Chế độ xem nơi kéo điểm vào. Người nghe có thể chọn thay đổi diện mạo của đối tượng View để phản ứng với sự kiện hoặc có thể phản ứng bằng cách làm nổi bật Chế độ xem của nó.
Trình lắng nghe sự kiện kéo nhận được một hành động ACTION_DRAG_EXITED sau khi người dùng đã di chuyển bóng kéo bên ngoài hộp giới hạn của Chế độ xem.
Bị rơi - Người dùng giải phóng mục được kéo trong hộp giới hạn của Chế độ xem. Hệ thống gửi cho người nghe đối tượng View một sự kiện kéo với loại hành động ACTION_DROP.
Khóa học lập trình Android Đã kết thúc - Ngay sau khi loại hành động ACTION_DROP, hệ thống sẽ gửi một sự kiện kéo với loại hành động ACTION_DRAG_ENDED để cho biết rằng hoạt động kéo đã kết thúc.
Lớp DragEvent
Các DragEvent đại diện cho một sự kiện được gửi ra bởi hệ thống tại thời điểm khác nhau trong quá trình hoạt động kéo và thả. Lớp này cung cấp một vài Hằng và các phương thức quan trọng mà chúng ta sử dụng trong quá trình Kéo / Thả.
Hằng số
Sau đây là tất cả các số nguyên có sẵn như là một phần của lớp DragEvent.
| Sr.Không. | Hằng số & Mô tả |
|---|---|
| 1 | ACTION_DRAG_STARTED Tín hiệu bắt đầu một hoạt động kéo và thả. |
| 2 | ACTION_DRAG_ENTERED Tín hiệu cho Chế độ xem mà điểm kéo đã vào hộp giới hạn của Chế độ xem. |
| 3 | ACTION_DRAG_LOCATION Đã gửi tới Chế độ xem sau ACTION_DRAG_ENTERED nếu bóng kéo vẫn nằm trong hộp giới hạn của đối tượng Xem. |
| 4 | ACTION_DRAG_EXITED Tín hiệu mà người dùng đã di chuyển bóng kéo bên ngoài hộp giới hạn của Chế độ xem. |
| 5 | ACTION_DROP Tín hiệu cho Chế độ xem mà người dùng đã phát hành bóng kéo và điểm kéo nằm trong hộp giới hạn của Chế độ xem. |
| 6 | ACTION_DRAG_ENDED Tín hiệu cho Chế độ xem mà thao tác kéo và thả đã kết thúc. |
Phương pháp
Sau đây là một vài phương thức quan trọng và được sử dụng thường xuyên nhất có sẵn như là một phần của lớp DragEvent.| Sr.Không. | Hằng số & Mô tả |
|---|---|
| 1 | int getAction () Kiểm tra giá trị hành động của sự kiện này .. |
| 2 | ClipData getClipData () Trả về đối tượng ClipData được gửi đến hệ thống như một phần của lệnh gọi tới startDrag (). |
| 3 | ClipDescrip getClipDescrip () Trả về đối tượng ClipDes mô tả có trong ClipData. |
| 4 | boolean getResult () Trả về một dấu hiệu của kết quả của hoạt động kéo và thả. |
| 5 | float getX () Lấy tọa độ X của điểm kéo. |
| 6 | float getY () Lấy tọa độ Y của điểm kéo. |
| 7 | Chuỗi toString () Trả về một chuỗi đại diện của đối tượng DragEvent này. |
Lắng nghe sự kiện kéo
Nếu bạn muốn bất kỳ chế độ xem nào của mình trong Bố cục sẽ phản hồi sự kiện Kéo thì chế độ xem của bạn sẽ thực hiện phương thức gọi lại View.OnDragListener hoặc thiết lập phương thức gọi lại trênDragEvent (DragEvent) .
Khi hệ thống gọi phương thức hoặc trình nghe, nó sẽ truyền cho chúng một đối tượng DragEvent được giải thích ở trên. Bạn có thể có cả phương thức nghe và phương thức gọi lại cho đối tượng View. Nếu điều này xảy ra, trước tiên hệ thống sẽ gọi người nghe và sau đó xác định cuộc gọi lại miễn là người nghe trả về đúng.
Sự kết hợp giữa phương thức onDragEvent (DragEvent) và View.OnDragListener tương tự như sự kết hợp của onTouchEvent () và View.OnTouchListener được sử dụng với các sự kiện chạm trong các phiên bản Khóa học lập trình Android cũ.
Bạn bắt đầu với việc tạo ClipData và ClipData.Item cho dữ liệu được di chuyển. Là một phần của đối tượng ClipData , cung cấp siêu dữ liệu được lưu trữ trong đối tượng ClipDes mô tả trong ClipData. Đối với thao tác kéo và thả không thể hiện chuyển động dữ liệu, bạn có thể muốn sử dụng null thay vì một đối tượng thực tế.
Tiếp theo, bạn có thể mở rộng View.DragShadowBuilder để tạo bóng kéo để kéo chế độ xem hoặc đơn giản là bạn có thể sử dụng View.DragShadowBuilder (Chế độ xem) để tạo bóng kéo mặc định có cùng kích thước với đối số Xem được truyền cho nó, bằng cảm ứng điểm tập trung trong bóng kéo.
Ví dụ sau đây cho thấy chức năng của Kéo và Thả đơn giản bằng cách sử dụng View.setOnLongClickListener () , View.setOnTouchListener () và View.OnDragEventListener () .
Sự kết hợp giữa phương thức onDragEvent (DragEvent) và View.OnDragListener tương tự như sự kết hợp của onTouchEvent () và View.OnTouchListener được sử dụng với các sự kiện chạm trong các phiên bản Khóa học lập trình Android cũ.
Bắt đầu một sự kiện kéo
Bạn bắt đầu với việc tạo ClipData và ClipData.Item cho dữ liệu được di chuyển. Là một phần của đối tượng ClipData , cung cấp siêu dữ liệu được lưu trữ trong đối tượng ClipDes mô tả trong ClipData. Đối với thao tác kéo và thả không thể hiện chuyển động dữ liệu, bạn có thể muốn sử dụng null thay vì một đối tượng thực tế.
Tiếp theo, bạn có thể mở rộng View.DragShadowBuilder để tạo bóng kéo để kéo chế độ xem hoặc đơn giản là bạn có thể sử dụng View.DragShadowBuilder (Chế độ xem) để tạo bóng kéo mặc định có cùng kích thước với đối số Xem được truyền cho nó, bằng cảm ứng điểm tập trung trong bóng kéo.
Ví dụ sau đây cho thấy chức năng của Kéo và Thả đơn giản bằng cách sử dụng View.setOnLongClickListener () , View.setOnTouchListener () và View.OnDragEventListener () .
| Bậc thang | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng IDE studio Android để tạo ứng dụng Android và đặt tên làỨng dụng của tôi theo gói com.example.saira_000.myapplication . |
| 2 | Sửa đổi tệp src / MainActivity.java và thêm mã để xác định trình lắng nghe sự kiện cũng như phương thức gọi lại cho hình ảnh logo được sử dụng trong ví dụ. |
| 3 | Sao chép hình ảnh abc.png trong các thư mục res / drawable- * . Bạn có thể sử dụng hình ảnh với độ phân giải khác nhau trong trường hợp bạn muốn cung cấp chúng cho các thiết bị khác nhau. |
| 4 | Sửa đổi bố cục tệp XML res / layout / Activity_main.xml để xác định chế độ xem mặc định của hình ảnh logo. |
| 5 | Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng. |
Khóa học lập trình Android Sau đây sẽ là nội dung của tệp res / layout / Activity_main.xml
Trong đoạn mã sau abc chỉ ra logo của guidespoint.com
Sau đây sẽ là nội dung của res / value / chuỗi.xml để xác định hai hằng số mới
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">My Application</string> </resources>Sau đây là nội dung mặc định của AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.saira_000.myapplication" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Hãy thử chạy ứng dụng Ứng dụng của tôi . Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường.
Để chạy ứng dụng từ Khóa học lập trình Android Studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Khóa học lập trình Android studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
Bây giờ, hãy nhấp vào biểu tượng TutorialsPoint được hiển thị và bạn sẽ thấy hình ảnh logo đó di chuyển một chút sau 1 giây nhấp dài từ vị trí của nó, đó là lúc bạn nên bắt đầu kéo hình ảnh. Bạn có thể kéo nó xung quanh màn hình và thả nó vào một vị trí mới.

Không có nhận xét nào:
Đăng nhận xét