垂直,抛物线

布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android
xmlns:tools=“http://schemas.android.com/tools
android:id="@+id/id_container"
android:layout_width=“match_parent”
android:layout_height=“match_parent”

>

<ImageView
    android:id="@+id/id_ball"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:src="@drawable/timg" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btn_chui"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="verticalRun"
        android:text="垂直" />

    <Button
        android:id="@+id/pwx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="抛物线" />

</LinearLayout>
package com.example.demol_06.ui.activity;

import android.animation.ObjectAnimator;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.PointF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageView;

import com.example.demol_06.R;

public class ThreeActivity extends AppCompatActivity {

private ImageView id_ball;
private Button pwx;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_three);
    id_ball = findViewById(R.id.id_ball);
    pwx = findViewById(R.id.pwx);
    Button btn_chui = findViewById(R.id.btn_chui);
    WindowManager wm = (WindowManager) ThreeActivity.this
            .getSystemService(Context.WINDOW_SERVICE);

    int width = wm.getDefaultDisplay().getWidth();
    final int height = wm.getDefaultDisplay().getHeight();
    btn_chui.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ObjectAnimator pingyi = ObjectAnimator.ofFloat(id_ball, "translationY", 0, height);
            pingyi.setDuration(3000);
            pingyi.start();

        }
    });
    pwx.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ValueAnimator valueAnimator = new ValueAnimator();
            valueAnimator.setDuration(3000);
            valueAnimator.setObjectValues(new PointF(0, 0));
            valueAnimator.setInterpolator(new LinearInterpolator());
            valueAnimator.setEvaluator(new TypeEvaluator<PointF>() {
                // fraction = t / duration
                @Override
                public PointF evaluate(float fraction, PointF startValue,
                                       PointF endValue) {
                    /* Log.e(TAG, fraction * 3 + "");*/
                    // x方向200px/s ,则y方向0.5 * 10 * t
                    PointF point = new PointF();
                    point.x = 200 * fraction * 3;
                    point.y = 0.5f * 200 * (fraction * 3) * (fraction * 3);
                    return point;
                }
            });
            valueAnimator.start();
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    PointF point = (PointF) animation.getAnimatedValue();
                    id_ball.setX(point.x);
                    id_ball.setY(point.y);

                }
            });

        }
    });

}

}

猜你喜欢

转载自blog.csdn.net/qq_42805722/article/details/87922668