Tại iOS chân dung:
"Rất nhiều người kia các hướng dẫn và mã mẫu không tạo ra các đoạn 3D đáng tin cậy. Xoay vòng đơn giản trên trục y không phải là những gì được thực hiện trong iOS. " Sau gần 30h tìm mẫu, tôi phải đồng ý. Tôi có một bộ phim, nơi tôi có thể chụp ảnh màn hình ở giữa. Phía bên phải của chế độ xem có: - chuyển động sang trái và thu nhỏ tới 95%. Phía bên trái của chế độ xem có: - chuyển động sang bên phải VÀ thu nhỏ tới 80%.
Tại Android Full (trạng thái ban đầu):
giữa Android:
mã Android:
// @param interpolatedTime The value of the normalized time (0.0 to 1.0)
// @param t The Transformation object to fill in with the current transforms.
protected void applyTransformation(float interpolatedTime, Transformation t){
float degrees = toDegree*interpolatedTime;
//float rad = (float) (degrees * Math.PI/180.0f);
Matrix matrix = t.getMatrix();
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy)
matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M
}
Một phiên bản cải tiến của các mã có thể được tìm thấy trong hầu hết các ví dụ :
// @param interpolatedTime The value of the normalized time (0.0 to 1.0)
// @param t The Transformation object to fill in with the current transforms.
protected void applyTransformation(float interpolatedTime, Transformation t){
float degrees = toDegree*interpolatedTime;
//float rad = (float) (degrees * Math.PI/180.0f);
Matrix matrix = t.getMatrix();
camera.save();
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);// M' = M * T(dx, dy)
matrix.postTranslate(centerX, centerY); // M' = T(dx, dy) * M
}
Một số khác biệt là: - phía bên phải của chế độ xem không di chuyển như cách iOS.
Dưới đây là các trục máy ảnh Android:
tôi tin rằng một traslation trên trục Z không sửa chữa nó. Có lẽ cần một sự co lại quá bằng cách nào đó.
float dz = (float) (centerX * Math.sin(rad));
camera.translate(0f, 0f, -dz);
Vẫn chưa đủ. Để nhiều là thu nhỏ phía bên trái.
tìm android.R.anim trong resp. sdk phiên bản thư mục bạn có thể tìm thấy một số ví dụ. –