package com.premnirmal.Magnet;
import android.content.Context;
import android.graphics.PixelFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.widget.ImageView;
/**
* Created by prem on 7/20/14.
* ViewHolder for the remove Icon.
*/
class RemoveView {
View mLayout;
View mButton;
View mShadow;
ImageView mButtonImage;
private WindowManager mWindowManager;
private SimpleAnimator mShowAnim;
private SimpleAnimator mHideAnim;
private SimpleAnimator mShadowFadeOut;
private SimpleAnimator mShadowFadeIn;
private final int buttonBottomPadding;
boolean shouldBeResponsive = true;
RemoveView(Context context) {
mLayout = LayoutInflater.from(context).inflate(R.layout.x_button_holder, null);
mButton = mLayout.findViewById(R.id.xButton);
mButtonImage = (ImageView) mLayout.findViewById(R.id.xButtonImg);
mButtonImage.setImageResource(R.drawable.trash);
buttonBottomPadding = mButton.getPaddingBottom();
mShadow = mLayout.findViewById(R.id.shadow);
mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
addToWindow(mLayout);
mShowAnim = new SimpleAnimator(mButton, R.anim.slide_up);
mHideAnim = new SimpleAnimator(mButton, R.anim.slide_down);
mShadowFadeIn = new SimpleAnimator(mShadow, android.R.anim.fade_in);
mShadowFadeOut = new SimpleAnimator(mShadow, android.R.anim.fade_out);
hide();
}
void setIconResId(int id) {
mButtonImage.setImageResource(id);
}
void setShadowBG(int shadowBG) {
mShadow.setBackgroundResource(shadowBG);
}
void show() {
if (mLayout != null && mLayout.getParent() == null) {
addToWindow(mLayout);
}
mShadowFadeIn.startAnimation();
mShowAnim.startAnimation();
}
void hide() {
mShadowFadeOut.startAnimation();
mHideAnim.startAnimation(new Animation.AnimationListener() {
@Override public void onAnimationStart(Animation animation) {
}
@Override public void onAnimationEnd(Animation animation) {
if (mLayout != null && mLayout.getParent() != null) {
mWindowManager.removeView(mLayout);
}
}
@Override public void onAnimationRepeat(Animation animation) {
}
});
}
void onMove(final float x, final float y) {
if (shouldBeResponsive) {
final int xTransformed = (int) Math.abs(
x * 100 / (mButton.getContext().getResources().getDisplayMetrics().widthPixels / 2));
final int bottomPadding = buttonBottomPadding - (xTransformed / 5);
if (x < 0) {
mButton.setPadding(0, 0, xTransformed, bottomPadding);
} else {
mButton.setPadding(xTransformed, 0, 0, bottomPadding);
}
}
}
void destroy() {
if (mLayout != null && mLayout.getParent() != null) {
mWindowManager.removeView(mLayout);
}
mLayout = null;
mWindowManager = null;
}
private void addToWindow(View layout) {
WindowManager.LayoutParams params =
new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT);
mWindowManager.addView(layout, params);
}
}