Tôi đang cố gắng sử dụng Máy ảnh (android.graphics.Camera không phải máy ảnh phần cứng) để xoay khung nhìn xung quanh một điểm cụ thể , trong trường hợp này là giữa canvas.Cách xoay canvas tại một điểm cụ thể bằng cách sử dụng android.graphics.Camera.rotateX (góc)
Trong dispatchDraw (Canvas canvas) - để ngắn gọn, tôi sẽ loại bỏ tất cả các phần không quan trọng.
camera.save();
camera.rotateX(0);
camera.rotateY(0);
camera.rotateZ(angle);
camera.getMatrix(cameraMatrix);
camera.restore();
canvas.concat(cameraMatrix);
Canvas xoay, nhưng luôn luôn ở góc trên bên trái.
LƯU Ý: Bởi vì vải đã được xây dựng để được lớn hơn diện tích trưng bày tôi cũng cần phải dịch các kết quả cuối cùng để nó tập trung vào màn hình, tôi có thể làm điều này với một trong hai
canvas.translate(xOffset,yOffset) PRIOR to calling the camera methods
HOẶC
cameraMatrix.preTranslate(xOffset,yOffset) AFTER the camera methods
Cả hai tập trung đúng vải trong màn hình nhưng tôi dường như không thể nắm được vấn đề luân chuyển là trung tâm cho (góc) gọi camera.rotateZ, cố gắng sử dụng các phương pháp trong mẫu android 3D nhưng trong khi họ dường như làm việc cho trục X/Y họ dường như không ảnh hưởng đến trục Z
Bất kỳ trợ giúp nào sẽ được đánh giá cao, tài liệu không chính xác.
Hi cảm ơn cho bài đăng này, Nhưng tôi không thể hiểu được những gì sẽ là giá trị của translateX, translateY và centerScaled biến. Bạn có thể giải thích cho tôi không? – Dhaval
@Dhaval vui lòng kiểm tra http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html – Ankit
Thực ra, đây có vẻ là giải pháp đúng.Vì 'Camera # applyToCanvas()' có thể không hoạt động đối với một số thiết bị ICS –