IT/Android
안드로이드 터치 이벤트가 발생하지 않으면 자동으로 뷰가 사라지는 효과
UIMarvel
2012. 2. 16. 20:54
터치 이벤트가 더이상 발생되지 않으면 2초뒤 자동으로 View 의 가 사라지는 효과 적용
package lowmans.test.auto_fade_in_out;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.ImageView;
public class AutoFadeInOut extends Activity {
private ImageView iv;
private AlphaAnimation fade_in;
private AlphaAnimation fade_out;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
fadeOutImage();
break;
}
super.handleMessage(msg);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv = (ImageView) findViewById(R.id.img);
fade_in = new AlphaAnimation(1, 0);
fade_in.setDuration(2000);
fade_in.setAnimationListener(animationListener);
fade_out = new AlphaAnimation(1, 1);
fade_out.setDuration(1);
sendMsg();
}
private void fadeOutImage() {
if(iv.getVisibility() == View.VISIBLE){
iv.setAnimation(fade_in);
iv.startAnimation(fade_in);
}
}
private void sendMsg(){
handler.removeMessages(0);
handler.sendEmptyMessageDelayed(0, 2000);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
iv.setVisibility(View.VISIBLE);
iv.setAnimation(fade_out);
iv.startAnimation(fade_out);
break;
case MotionEvent.ACTION_UP:
sendMsg();
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
Animation.AnimationListener animationListener = new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Log.i("Test" , "onAnimationEnd");
iv.setVisibility(View.INVISIBLE);
}
};
}