package com.gc.materialdesign.widgets;
import com.gc.materialdesign.R;
import com.gc.materialdesign.views.ButtonFlat;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.TextView;
public class SnackBar extends Dialog{
String text;
String buttonText;
View.OnClickListener onClickListener;
Activity activity;
View view;
// With action button
public SnackBar(Activity activity, String text, String buttonText, View.OnClickListener onClickListener) {
super(activity, android.R.style.Theme_Translucent);
this.activity = activity;
this.text = text;
this.buttonText = buttonText;
this.onClickListener = onClickListener;
}
// Only text
public SnackBar(Activity activity, String text) {
super(activity, android.R.style.Theme_Translucent);
this.activity = activity;
this.text = text;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.snackbar);
setCanceledOnTouchOutside(false);
((TextView)findViewById(R.id.text)).setText(text);
ButtonFlat button = (ButtonFlat) findViewById(R.id.buttonflat);
if(text == null || onClickListener == null){
button.setVisibility(View.GONE);
}else{
button.setText(buttonText);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
onClickListener.onClick(v);
}
});
}
view = findViewById(R.id.snackbar);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return activity.dispatchTouchEvent(event);
}
@Override
public void onBackPressed() {
}
@Override
public void show() {
super.show();
view.setVisibility(View.VISIBLE);
view.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.snackbar_show_animation));
dismissTimer.start();
}
// Dismiss timer
Thread dismissTimer = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3500);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendMessage(new Message());
}
});
Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
dismiss();
return false;
}
});
@Override
public void dismiss() {
Animation anim = AnimationUtils.loadAnimation(activity, R.anim.snackbar_hide_animation);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
SnackBar.super.dismiss();
}
});
view.startAnimation(anim);
}
}