本文整理汇总了Java中android.graphics.Camera.getMatrix方法的典型用法代码示例。如果您正苦于以下问题:Java Camera.getMatrix方法的具体用法?Java Camera.getMatrix怎么用?Java Camera.getMatrix使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类android.graphics.Camera
的用法示例。
在下文中一共展示了Camera.getMatrix方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
if (mReverse) {
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
}
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例2: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float degrees = fromDegrees + ((toDegrees - fromDegrees) * interpolatedTime);
final Matrix matrix = t.getMatrix();
final Camera camera = mCamera;
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例3: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
if (mReverse) {
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
}
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例4: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Camera camera = new Camera();
camera.save();
// 设置camera动作为绕Y轴旋转
// 总共旋转180度,因此计算在每个补间时间点interpolatedTime的角度即为两着相乘
// camera.rotateX(deg * interpolatedTime);
camera.rotateY(180 * interpolatedTime);
// camera.rotateZ(180 * interpolatedTime);
//
// 根据camera动作产生一个matrix,赋给Transformation的matrix,以用来设置动画效果
Matrix matrix = t.getMatrix();
camera.getMatrix(matrix);
camera.restore();
//经过以下平移,才能以view的中心点进行翻转
matrix.preTranslate(-view.getWidth() / 2, -view.getHeight() / 2);
matrix.postTranslate(view.getWidth() / 2, view.getHeight() / 2);
}
示例5: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
if (mReverse) {
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
}
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例6: skewImage
import android.graphics.Camera; //导入方法依赖的package包/类
/**
* 3D效果
*
* @param srcBitmap
* @return
*/
public static Bitmap skewImage(Bitmap srcBitmap, int picWidth, int picHeight, int height) {
srcBitmap = Bitmap.createScaledBitmap(srcBitmap, picWidth, picHeight, true);
Bitmap bitmap = createReflectedImage(srcBitmap, height);
Camera camera = new Camera();
camera.save();
Matrix matrix = new Matrix();
camera.rotateY(15);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-bitmap.getWidth() >> 1, -bitmap.getHeight() >> 1);
Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
Bitmap canvasBitmap = Bitmap.createBitmap(newBitmap.getWidth(), newBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(canvasBitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
// paint.setStyle(Style.FILL);
canvas.drawBitmap(newBitmap, 0, 0, paint);
newBitmap.recycle();
// bitmap.recycle();
return canvasBitmap;
}
示例7: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
/**
* 执行顺序 matrix.preTranslate() --> camera.rotateY(degrees) --> matrix.postTranslate() --> matrix.postScale()
* @param interpolatedTime
* @param t
*/
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float degrees = mReverse ? mToDegrees + (mFromDegrees - mToDegrees) * interpolatedTime : mFromDegrees + (mToDegrees - mFromDegrees) * interpolatedTime;
final Matrix matrix = t.getMatrix();
final Camera camera = mCamera;
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
// matrix.preTranslate(-mPivotXValue, 0); //在进行rotateY之前需要移动物体,让物体左边与Y轴对齐
// matrix.postTranslate(mPivotXValue, 0); //还原物体位置
if (mReverse) {
matrix.postScale(1 + (scaleTimes - 1) * (1.0f - interpolatedTime), 1 + (scaleTimes - 1) * (1.0f - interpolatedTime), mPivotX - mPivotXValue , mPivotY - mPivotYValue);
} else {
// matrix.postScale(1 + (scaleTimes - 1) * interpolatedTime, 1 + (scaleTimes - 1) * interpolatedTime, mPivotX, mPivotY);
matrix.postScale(1 + (scaleTimes - 1) * interpolatedTime, 1 + (scaleTimes - 1) * interpolatedTime, mPivotX - mPivotXValue , mPivotY - mPivotYValue );
}
}
示例8: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final int derection = mTurnUp ? 1 : -1;
final Matrix matrix = t.getMatrix();
camera.save();
if (mTurnIn) {
camera.translate(0.0f, derection * mCenterY * (interpolatedTime - 1.0f), 0.0f);
} else {
camera.translate(0.0f, derection * mCenterY * (interpolatedTime), 0.0f);
}
camera.rotateX(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例9: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float tmpFromDegrees = fromDegrees;
float degrees = tmpFromDegrees + ((toDegrees - tmpFromDegrees) * interpolatedTime);
float tmpCenterX = centerX;
float tmpCenterY = centerY;
Camera tmpCamera = camera;
Matrix matrix = t.getMatrix();
LogUtils.d("interpolatedTime: " + interpolatedTime);
tmpCamera.save();
if (reverse) {
tmpCamera.translate(0f, 0f, depthZ * interpolatedTime);
} else {
tmpCamera.translate(0f, 0f, depthZ * (1.0f - interpolatedTime));
}
tmpCamera.rotateY(degrees);
tmpCamera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-tmpCenterX, -tmpCenterY);
matrix.postTranslate(tmpCenterX, tmpCenterY);
super.applyTransformation(interpolatedTime, t);
}
示例10: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
/**
* 执行顺序 matrix.preTranslate() --> camera.rotateY(degrees) --> matrix.postTranslate() --> matrix.postScale()
* @param interpolatedTime
* @param t
*/
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float degrees = mReverse ? mToDegrees + (mFromDegrees - mToDegrees) * interpolatedTime : mFromDegrees + (mToDegrees - mFromDegrees) * interpolatedTime;
final Matrix matrix = t.getMatrix();
final Camera camera = mCamera;
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-mPivotXValue, 0); //在进行rotateY之前需要移动物体,让物体左边与Y轴对齐
matrix.postTranslate(mPivotXValue, 0); //还原物体位置
if (mReverse) {
matrix.postScale(1 + (scaleTimes - 1) * (1.0f - interpolatedTime), 1 + (scaleTimes - 1) * (1.0f - interpolatedTime), mPivotX, mPivotY);
} else {
matrix.postScale(1 + (scaleTimes - 1) * interpolatedTime, 1 + (scaleTimes - 1) * interpolatedTime, mPivotX, mPivotY);
}
}
示例11: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = this.fromDegrees;
float degrees = fromDegrees + ((toDegrees - fromDegrees) * interpolatedTime);
final float centerX = xCenter;
final float centerY = yCenter;
final Camera camera = this.camera;
final Matrix matrix = t.getMatrix(); //保存一次camera初始状态,用于restore()
camera.save();
if (reverse) {
camera.translate(0.0f, 0.0f, zDepth * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, zDepth * (1.0f - interpolatedTime));
}
//围绕Y轴旋转degrees度
camera.rotateY(degrees);
//行camera中取出矩阵,赋值给matrix
camera.getMatrix(matrix);
//camera恢复到初始状态,继续用于下次的计算
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例12: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = m_fromDegree;
float degrees = fromDegrees + ((m_toDegree - fromDegrees) * interpolatedTime);
final float centerX = m_centerX;
final float centerY = m_centerY;
final Camera camera = m_camera;
final Matrix matrix = t.getMatrix();
camera.save();
if (m_reverse) {
camera.translate(0.0f, 0.0f, m_depthZ * interpolatedTime);
} else {
camera.translate(0.0f, 0.0f, m_depthZ * (1.0f - interpolatedTime));
}
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例13: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
protected final void applyTransformation(float paramFloat, Transformation transformation) {
float f1 = 0.0F - 360.0F * paramFloat;
float f2 = mWidth;
float f3 = mHeight;
final Camera camera = mCamera;
Matrix matrix = transformation.getMatrix();
camera.save();
if ((0x1 & mRotationFlags) == 1)
camera.rotateX(f1);
if ((0x2 & mRotationFlags) == 2)
camera.rotateY(f1);
if ((0x4 & mRotationFlags) == 4)
camera.rotateZ(f1);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-f2, -f3);
matrix.postTranslate(f2, f3);
}
示例14: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(final float interpolatedTime, final Transformation t) {
final float fromDegrees = mFromDegrees;
final float degrees = fromDegrees + (mToDegrees - fromDegrees) * interpolatedTime;
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
示例15: applyTransformation
import android.graphics.Camera; //导入方法依赖的package包/类
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
// 调节深度
if (mReverse)
camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
else
camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
// 绕y轴旋转
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
// 修正失真,主要修改 MPERSP_0 和 MPERSP_1
float[] mValues = new float[9];
matrix.getValues(mValues); //获取数值
mValues[6] = mValues[6] / scale; //数值修正
mValues[7] = mValues[7] / scale; //数值修正
matrix.setValues(mValues); //重新赋值
// 调节中心点
matrix.preTranslate(-centerX, -centerY);
matrix.postScale(centerX, centerY);
}