代码改变世界

Android动画

2015-11-02 00:50  一切尽在掌握  阅读(288)  评论(0编辑  收藏  举报
	private void showInAnim(final View view, final View backgroundview) {
		DisplayMetrics dm = getResources().getDisplayMetrics();
		float w_screen = dm.widthPixels;
		final float scale = w_screen / (w_screen - (float) Common.dip2px(this, 20));

		AnimatorSet set = new AnimatorSet();
		ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 0.0f, scale);
		scaleX.setDuration(220);
		ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 0.0f, scale);
		scaleY.setDuration(220);
		ObjectAnimator backgroundColor = ObjectAnimator.ofInt(backgroundview, "backgroundColor", Color.parseColor("#00000000"), Color.parseColor("#7f000000"));
		backgroundColor.setDuration(220);
		backgroundColor.setEvaluator(new ArgbEvaluator());
		ObjectAnimator backgroundColorOne = ObjectAnimator.ofInt(comment_bg_one, "backgroundColor", Color.parseColor("#00000000"), Color.parseColor("#7f000000"));
		backgroundColorOne.setDuration(220);
		backgroundColorOne.setEvaluator(new ArgbEvaluator());
		ObjectAnimator backgroundColorTwo = ObjectAnimator.ofInt(comment_bg_two, "backgroundColor", Color.parseColor("#00000000"), Color.parseColor("#7f000000"));
		backgroundColorTwo.setDuration(220);
		backgroundColorTwo.setEvaluator(new ArgbEvaluator());
		ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "translationX", pivotX - getResources().getDisplayMetrics().widthPixels / 2, 0.0f);
		translationX.setDuration(220);
		ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", pivotY - getResources().getDisplayMetrics().heightPixels / 2, 0.0f);
		translationY.setDuration(220);
		ObjectAnimator scaleXhui = ObjectAnimator.ofFloat(view, "scaleX", scale, 1.0f);
		scaleXhui.setDuration(120);
		ObjectAnimator scaleYhui = ObjectAnimator.ofFloat(view, "scaleY", scale, 1.0f);
		scaleYhui.setDuration(120);

		set.playTogether(scaleX, scaleY, backgroundColor, backgroundColorOne, backgroundColorTwo, translationX, translationY);
		set.play(scaleXhui).with(scaleYhui).after(scaleX);

		set.setInterpolator(new DecelerateInterpolator());
		set.start();
		set.addListener(new AnimatorListener() {

			@Override
			public void onAnimationStart(Animator arg0) {

			}

			@Override
			public void onAnimationRepeat(Animator arg0) {

			}

			@Override
			public void onAnimationEnd(Animator arg0) {
				loadData(true);
			}

			@Override
			public void onAnimationCancel(Animator arg0) {

			}
		});

	}

	private void showOutAnim(View view, View backgroundview) {
		int[] location = new int[2];
		content.getLocationOnScreen(location);
		layoutY = location[1] + content.getHeight() / 2;


		AnimatorSet set = new AnimatorSet();
		ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 1f, 0.0f);
		ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 1f, 0.0f);
		ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "translationX", 0.0f, pivotX - getResources().getDisplayMetrics().widthPixels / 2);
		ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0.0f, pivotY - layoutY);
		ObjectAnimator backgroundColor = ObjectAnimator.ofInt(backgroundview, "backgroundColor", Color.parseColor("#7f000000"), Color.parseColor("#00000000"));
		backgroundColor.setEvaluator(new ArgbEvaluator());
		ObjectAnimator backgroundColorOne = ObjectAnimator.ofInt(comment_bg_one, "backgroundColor", Color.parseColor("#7f000000"), Color.parseColor("#00000000"));
		backgroundColorOne.setEvaluator(new ArgbEvaluator());
		ObjectAnimator backgroundColorTwo = ObjectAnimator.ofInt(comment_bg_two, "backgroundColor", Color.parseColor("#7f000000"), Color.parseColor("#00000000"));
		backgroundColorTwo.setEvaluator(new ArgbEvaluator());

		set.play(scaleX).with(scaleY).with(translationX).with(translationY).with(backgroundColor).with(backgroundColorOne).with(backgroundColorTwo);

		set.setDuration(240).setInterpolator(new DecelerateInterpolator());
		set.addListener(new AnimatorListener() {

			@Override
			public void onAnimationStart(Animator arg0) {
			}

			@Override
			public void onAnimationRepeat(Animator arg0) {
			}

			@Override
			public void onAnimationEnd(Animator arg0) {
				DingDetailActivity.this.finish();

			}

			@Override
			public void onAnimationCancel(Animator arg0) {
			}
		});
		set.start();
	}