Tôi đang làm việc với hình ảnh có kích thước lớn và khi tôi cố gắng xoay chúng (applying matrix on the bitmap)
nhiều giây xảy ra. Tôi đã thấy rằng thư viện hệ thống android có thể thực hiện tác vụ này một cách rất nhanh thay thế. Làm thế nào là nó có thể?Cách nhanh nhất để xoay bitmap kích thước lớn
Tôi nghĩ để thực hiện xoay vòng trên asyncTask, chỉ áp dụng xoay vòng ImageView (không mất nhiều thời gian) trên chuỗi chính, nhưng nếu ứng dụng bị giết trước khi asyncTask đến cuối, ứng dụng sẽ giảm trong trạng thái không nhất quán.
Đây là mã của tôi bitmap luân chuyển, trong đó có thực hiện thời gian dài cho bitmap lớn:
Matrix mat = new Matrix();
mat.setRotate(90);
bMap = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), mat, true);
Đây là một ý tưởng tốt để cải thiện kinh nghiệm người dùng, tất nhiên. Nhưng vấn đề chính là khi tôi làm việc trên ảnh gốc ở cuối, nhiệm vụ có thể cần nhiều thời gian để hoàn thành và tôi có những biến chứng sau: - nếu tôi thực hiện thao tác trên chủ đề chính, người dùng phải đợi - Nếu tôi thực hiện thao tác trên asyncTask, ứng dụng sẽ bị hủy trước khi hoàn thành và các thay đổi sẽ bị mất –
Điều này nghe có vẻ giống như độ lệch so với yêu cầu ban đầu - bạn có thể vẽ hình chữ nhật thay vì xoay toàn bộ hình ảnh trong thời gian thực . cuối cùng những gì người dùng cần là một dấu hiệu cho biết hình ảnh của anh ta đã xoay bao nhiêu. Điều này sẽ nhanh hơn và dễ dàng thực hiện trên giao diện người dùng mà không bị lag .. – Ronnie
Xin lỗi vì sự hiểu lầm, câu hỏi của tôi là: "Làm thế nào để thực hiện xoay bitmap một cách nhanh chóng, vì bộ sưu tập hệ thống có thể thực hiện". Dù sao tôi đang stil rất nhiều nhầm lẫn bởi gợi ý của bạn. Điều tôi cần cuối cùng là thực hiện xoay vòng trên bitmap kích thước lớn, không cung cấp cho người dùng một chỉ báo về xoay vòng như bạn đã nói. Hơn nữa, tôi chỉ cho phép quay 90, 180, 270, 360 độ giống như thư viện cho phép. Cảm ơn sự kiên nhẫn của bạn :) –