1
package com.example.flingtry;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnClickListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity implements OnClickListener
{
private static final int SWIPE_MIN_DISTANCE = 10;
private static final int SWIPE_MAX_OFF_PATH = 50;
private static final int SWIPE_THRESHOLD_VELOCITY = 10;
private GestureDetector gestureDetector;
TextView img;
AnimationDrawable ribinclickanimation;
Button btn1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new GestureDetector(new MyGestureDetector());
img= (TextView) findViewById(R.id.img);
img.setBackgroundResource(R.anim.clickframeanimation);
ribinclickanimation= (AnimationDrawable) img.getBackground();
btn1= (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
// Set the touch listener for the main view to be our custom gesture listener
img.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
if (gestureDetector.onTouchEvent(event))
{
return true;
}
return false;
}
});
}
class MyGestureDetector extends SimpleOnGestureListener
{
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY)
{
ribinclickanimation.stop();
Toast.makeText(getApplicationContext(), "Helloooo", Toast.LENGTH_SHORT).show();
img.setBackgroundResource(R.anim.clickframeanimation);
ribinclickanimation= (AnimationDrawable) img.getBackground();
ribinclickanimation.start();
return false;
}
return false;
}
// It is necessary to return true from onDown for the onFling event to register
@Override
public boolean onDown(MotionEvent e)
{
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY)
{
// beware, it can scroll to infinity
return true;
}
}
public void onClick(View arg0)
{
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Helloooo", Toast.LENGTH_SHORT).show();
}
}
이 코드는 제스처를 사용하여 이발사 이벤트에 애니메이션을 적용하는 데 사용됩니다. 그러나 여기에서 문제는 드래그가 끝난 후에 애니메이션이 일어나는 데 시간이 걸린다는 것입니다. 원하는 것은 이미지를 드래그하면서 동시에 애니메이션을 적용해야한다는 것입니다. 당신이 MotionEvent.ACTION_MOVE 사용보기에서 이동 방향을 감지 한 번 MotionEvent.ACTION_MOVE플링 이벤트에 애니메이션 적용
: MotionEvent.ACTION_UP :
드래그하는 동안 애니메이션이 작동하도록 하시겠습니까? – 13hsoj
예 .. 그렇지 않으면 그 완벽하게 작동합니다. 곧 애니메이션을 드래그합니다. – sankettt
그러면 스크롤 할 때 호출되는 onScroll 메서드 안에 코드를 삽입 할 수 있습니다. 플링은 fling 동작이 완료 될 때만 호출됩니다. – 13hsoj