东莞公司网站制作公司,wordpress修改注册表,永久免费白嫖云服务器,什么是单页面网站先上效果图:制作过程是先起一个模拟器#xff0c;然后把GifCam的框拖到模拟器上面#xff0c;点击Rec的new先#xff0c;然后点击Rec,然后就save到本地成gif文件这里做一个左右旋转#xff0c;上下旋转#xff0c;和左右移动的动画#xff0c;先自己建立一个View的类然后把GifCam的框拖到模拟器上面点击Rec的new先然后点击Rec,然后就save到本地成gif文件这里做一个左右旋转上下旋转和左右移动的动画先自己建立一个View的类作为操作的对象:public class MyView extends View {private Paint mPaint;int width 0;int height 0;public MyView(Context context, AttributeSet attrs) {super(context, attrs);mPaint new Paint();mPaint.setStrokeWidth(5);mPaint.setColor(Color.RED);this.setBackgroundColor(Color.RED);width context.getResources().getDimensionPixelSize(R.dimen.width);height context.getResources().getDimensionPixelSize(R.dimen.height);}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);//width 300 height 300canvas.drawLine(0, 0, width, 0, mPaint);canvas.drawLine(width, 0, width, height, mPaint);canvas.drawLine(width, height, 0, height, mPaint);canvas.drawLine(0, height, 0, 0, mPaint);canvas.save();}}左右旋转动画:public class RotateLeftRightAnimation extends Animation {private final float mFromDegrees;private final float mToDegrees;private final float mCenterX;private final float mCenterY;private final float mDepthZ;private final boolean mReverse;private Camera mCamera;private InterpolatedTimeListener listener;public RotateLeftRightAnimation(float fromDegrees, float toDegrees, float centerX, float centerY, float depthZ,boolean reverse) {mFromDegrees fromDegrees;mToDegrees toDegrees;mCenterX centerX;mCenterY centerY;mDepthZ depthZ;mReverse reverse;}public static interface InterpolatedTimeListener {public void interpolatedTime(float interpolatedTime);}public void setInterpolatedTimeListener(InterpolatedTimeListener listener) {this.listener listener;}Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera new Camera();}Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {if (listener ! null) {listener.interpolatedTime(interpolatedTime);}final float fromDegrees mFromDegrees;float degrees fromDegrees ((mToDegrees - fromDegrees) * interpolatedTime);boolean overHalf (interpolatedTime 0.5f);if (overHalf) {degrees degrees - 180;}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); //这个Y轴旋转就是左右旋转camera.getMatrix(matrix);camera.restore();matrix.preTranslate(-centerX, -centerY);matrix.postTranslate(centerX, centerY);//这两句的意思是把View移到原点后旋转完再移动到现在的位置}}如果是上线旋转就把camera.rotateY(degrees)改成camera.rotateX(degrees)如果是移动的话public class MoveAnimation extends Animation {private Camera mCamera;private float mMoveDistance;private InterpolatedTimeListener listener;public MoveAnimation(float moveDistance) {mMoveDistance moveDistance;}public static interface InterpolatedTimeListener {public void interpolatedTime(float interpolatedTime);}public void setInterpolatedTimeListener(InterpolatedTimeListener listener) {this.listener listener;}Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera new Camera();}Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {if (listener ! null) {listener.interpolatedTime(interpolatedTime);}final Camera camera mCamera;final Matrix matrix t.getMatrix();camera.save();camera.getMatrix(matrix);camera.restore();matrix.postTranslate(mMoveDistance, 0);}}然后主程序这样来调用:final MyView myView (MyView) findViewById(R.id.myview);Button btn (Button) findViewById(R.id.btn_move);btn.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {MoveAnimation anim new MoveAnimation(200);anim.setDuration(500);myView.startAnimation(anim);}});Button btn_up_down_rotate (Button) findViewById(R.id.btn_up_down_rotate);btn_up_down_rotate.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {RotateUpDownAnimation anim new RotateUpDownAnimation(0,180, v.getWidth() / 2, v.getHeight() / 2, 0, false);anim.setDuration(500);myView.startAnimation(anim);}});Button btn_left_right_rotate (Button) findViewById(R.id.btn_left_right_rotate);btn_left_right_rotate.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {RotateLeftRightAnimation anim new RotateLeftRightAnimation(0,180, v.getWidth() / 2, v.getHeight() / 2, 0, false);anim.setDuration(500);myView.startAnimation(anim);}});