Gah, I accidentally hit appreciate on your comment, Roquen. No harm done.
Anyways, I have time to spare so I'll explain this as best as I can.
Adding to what Roquen said, you only calculate the delta time once when you instantiate your Player class. Delta time is the time between the last frame and the current frame, so saving the value is useless. In your isRunning() method, add store the current delta time and use that. Also you can shorten your if statements. Instead of
, you could simply write
. Last thing, avoid creating new objects in methods called repeatedly. libGDX's Vector2 class has a method called
so it's better to call that method than create a new Vector each time. Now onto the actual physics.
If I understand correctly, you want the player to accelerate to a maximum speed, and 'drift' to a stop. Here's my usual approach:
Lets define some values first. Suppose our object accelerates at 20 pixels per second. And our maximum speed (otherwise known as terminal velocity) for both the x and y axis is 200 pixels per second.
Check which movement keys are pressed. If up is pressed, set acceleration.y to our acceleration value. If up is not pressed, set acceleration.y to zero. For down, set acceleration.y to the negative of our acceleration value or zero if not pressed. Repeat for left and right, but on the xaxis instead.
After the acceleration vector has the correct components, multiply it by deltaTime. This will normalize the acceleration values based on the time elapsed so the player moves at the same rate regardless of frame rate.
Then, add the acceleration to the velocity. Now, we need to cap the velocity in case it exceeds our maximum speed (otherwise known as terminal velocity). Add a couple if statements to check if the x and y axis of the velocity exceed our maximum speed, and cap them if they do. Viola, our player moves smoothly! But how do we stop?
When a key is released, it's acceleration component is set to zero. Newton's first law of physics states objects move with a constant velocity (or stay at rest) until acted upon by an outside force. To stop our object, we have to simulate friction (the outside force). Don't worry, this is really simple.
Before, when we checked if each key was pressed, we set it's respective acceleration value to zero if it was released. So if up was released, acceleration.y would be set to zero. This means our object should start slowing down on the y axis. Use a simple if statement to check if acceleration.y == 0, then multiply velocity.y by some friction or damping value. The higher the value the more gradually an object will slow down. I usually use 0.95, but you can play around with different values to find what you like.
Lastly, add our velocity to our position and reset our acceleration back to normal by multiplying it by the inverse of delta (1 / delta). This is important, otherwise you'll keep multiplying the acceleration by delta until it reaches zero.
Now we're done!
Your object will accelerate to a maximum speed and slow down when you let go of the movement keys. Here's some really basic pseudo code you can use:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
 final float ACCELERATION = 20F; final float MAX_SPEED = 200F; final float DAMP = 0.95F; float deltaTime = 0;
Vector2 acceleration, velocity, position;
public void update() { deltaTime = Gdx.graphics.getDeltaTime();
if(up.isPressed()) acceleration.y = ACCELERATION; else acceleration.y = 0;
if(down.isPressed()) acceleration.y = ACCELERATION; else acceleration.y = 0;
if(left.isPressed()) acceleration.x = ACCELERATION; else acceleration.x = 0;
if(right.isPressed()) acceleration.x = ACCELERATION; else acceleration.x = 0;
acceleration.scl(deltaTime); velocity.add(acceleration); if(Math.abs(velocity.x) > MAX_SPEED) velocity.x = MAX_SPEED * Math.signum(velocity.x); if(Math.abs(velocity.y) > MAX_SPEED) velocity.y = MAX_SPEED * Math.signum(velocity.y);
if(acceleration.x == 0) velocity.x *= DAMP; if(acceleration.y == 0) velocity.y *= DAMP;
position.add(velocity);
acceleration.scl(1 / delta);
}

Also, welcome to the forum!