En iOS retrato:
"Una gran cantidad de la otra los tutoriales y los códigos de muestra no producen saltos 3D creíbles. Una simple rotación en el eje y no es lo que se hace en iOS. " Después de casi 30 horas buscando muestras, tengo que estar de acuerdo. Tengo una película, donde podría tomar una captura de pantalla en el medio. El lado derecho de la vista tiene: - un movimiento hacia la izquierda Y una contracción al 95%. El lado izquierdo de la vista tiene: - un movimiento hacia el lado derecho Y un encogimiento al 80%.
En Android completa (estado inicial):
media Android:
código de 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
}
Una versión mejorada del código se puede encontrar en la mayoría de los ejemplos :
// @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
}
Algunas diferencias son: - el lado derecho de la vista no se mueve como la forma en la IOS.
Aquí los ejes de la cámara de Android:
sí creo una traslación en los ejes Z no lo arregla. Quizás de alguna manera también necesitó un psiquiatra.
float dz = (float) (centerX * Math.sin(rad));
camera.translate(0f, 0f, -dz);
Todavía no es suficiente. Para mucho es el encogimiento del lado izquierdo.
look para android.R.anim en resp. La carpeta de la versión sdk puede encontrar algunos ejemplos. –