package com.hnpolice.xiaoke.carspeedcontrol.test;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

import com.hnpolice.xiaoke.carspeedcontrol.R;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    private int tvLeft, tvRight, tvTop, tvBottom;
    private int Left, Right, Top, Bottom;
    private boolean first = true;
    private int startX, startY;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.test);


        if (first){
            textView.post(new Runnable() {
                @Override
                public void run() {
                    tvLeft = textView.getLeft();
                    tvTop = textView.getTop();
                    tvRight = textView.getRight();
                    tvBottom = textView.getBottom();
                    first = false;
                    textView.setText(tvLeft + "," + tvTop + "," + tvRight + "," + tvBottom);
                }
            });
        }


        textView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        startX = (int) event.getRawX();
                        startY = (int) event.getRawY();
                        Left = textView.getLeft();
                        Top = textView.getTop();
                        Right = textView.getRight();
                        Bottom = textView.getBottom();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        textView.layout(
                                (int) (Left + event.getRawX() - startX),
                                (int) (Top + event.getRawY() - startY),
                                (int) (Right + event.getRawX() - startX),
                                (int) (Bottom + event.getRawY() - startY));
                        break;
                    case MotionEvent.ACTION_UP:
                        AnimatorSet set = new AnimatorSet();
                        set.playTogether(
                                ObjectAnimator.ofFloat(textView, "translationX", tvLeft - textView.getLeft()),
                                ObjectAnimator.ofFloat(textView, "translationY", tvTop - textView.getTop())
                        );
                        set.setDuration(2000).start();

                        textView.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                textView.layout(textView.getLeft(), textView.getTop(), textView.getRight(), textView.getBottom());
                            }
                        }, 2000);

                        break;
                }
                return true;
            }
        });

    }
}