01/10/2018, 00:33

Xoay 360 độ trong Android

Mình đang muốn làm hiệu ứng xoay 360 độ trên app giống như trên web, vd: http://hyundai-thanhcong.vn/san-pham/Sonata . Mình đang có ý tưởng là lấy 36 cái ảnh (mỗi ảnh 10 độ),nhưng chưa biết làm sao để có thể xoay như thế kia. Mong mọi người tư vấn,thanks!

Huy Trần viết 02:45 ngày 01/10/2018

Idea để implement cái này đúng như bạn nói là dùng 36 cái ảnh, trang này nó cũng làm vậy luôn.

http://hyundai-thanhcong.vn/tempfiles/uploads/products/360/Sonata/ex_aa/es_1.png
http://hyundai-thanhcong.vn/tempfiles/uploads/products/360/Sonata/ex_aa/es_2.png
http://hyundai-thanhcong.vn/tempfiles/uploads/products/360/Sonata/ex_aa/es_3.png
...
http://hyundai-thanhcong.vn/tempfiles/uploads/products/360/Sonata/ex_aa/es_36.png

Về cách làm thì bạn có thể dùng 1 cái Image View, load sẵn 36 cái hình vào 1 mảng. Có 1 biến lưu index cái hình hiện tại đang được load trên image view.

Trên Image View bắt sự kiện touch move hay drag gì đó rồi kiểm tra hướng di chuyển của ngón tay bằng cách so sánh tọa độ điểm touch ở 2 thời điểm.

Sau khi tìm ra được hướng rồi thì cộng / trừ biến current index theo hướng di chuyển, thay đổi image trên image view thành cái hình của index hiện tại là xong

Quốc Công viết 02:37 ngày 01/10/2018

Hóng với bạn! Làm được share nhá

X viết 02:39 ngày 01/10/2018

Tương tự như ý tưởng của @huydotnet
Lấy giá trị tọa độ (XY trước) khi bắt đầu chạm màn hình và (XY sau) khi thả ra.
Gốc tọa độ ở góc trên bên trái (Top-Left) nên có thể hình dung nếu (X trước) > (X sau) tức là vuốt sang trái => ImageView cho hiển thị ảnh kế tiếp bên phải. (Tự tìm cách tính luôn Y cho trường hợp vuốt chéo/thẳng đứng)

Ngoài ra muốn nâng cao thêm thì dùng cả tọa độ khi đang vuốt màn hình (MotionEvent.ACTION_MOVE) để tạo hiệu ứng cho đẹp.

Huy Tuấn viết 02:38 ngày 01/10/2018

sr vì mình quên mất ko trả lời lại bạn,mình làm như thế này. Đầu tiên mình tạo 1 mảng IMAGE,set imageView = 1 phần tử bất kỳ của mảng. Sau đó mình lấy kích thước màn hình width=displaymetrics.widthPixels,sau đó tính khoảng chia = width / IMAGE.length;Cuối cùng mình gọi MotionEvent.ACTION_DOWN để lấy x_down rồi trong MotionEvent.ACTION_MOVE để tính khoảng cách và set lại ảnh thôi

Bài liên quan
0