Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package net.simonvt.messagebar;
  
  import android.os.Bundle;
  import android.os.Handler;
  import android.os.Parcel;
  import android.view.View;
 
 
 public class MessageBar {
 
     public interface OnMessageClickListener {
 
         void onMessageClick(Parcelable token);
     }
 
     private static final String STATE_MESSAGES = "net.simonvt.messagebar.MessageBar.messages";
     private static final String STATE_CURRENT_MESSAGE = "net.simonvt.messagebar.MessageBar.currentMessage";
 
     private static final int ANIMATION_DURATION = 600;
 
     private static final int HIDE_DELAY = 5000;
 
     private View mContainer;
 
     private TextView mTextView;
 
     private TextView mButton;
 
     private LinkedList<MessagemMessages = new LinkedList<Message>();
 
     private Message mCurrentMessage;
 
     private boolean mShowing;
 
 
     private Handler mHandler;
 
     private AlphaAnimation mFadeInAnimation;
 
     private AlphaAnimation mFadeOutAnimation;
 
     public MessageBar(Activity activity) {
         ViewGroup contianer = (ViewGroupactivity.findViewById(...);
         View v = activity.getLayoutInflater().inflate(..contianer);
         init(v);
     }
 
     public MessageBar(View v) {
         init(v);
     }
 
     private void init(View v) {
          = v.findViewById(..);
         .setVisibility(.);
          = (TextViewv.findViewById(..);
          = (TextViewv.findViewById(..);
 
          = new AlphaAnimation(0.0f, 1.0f);
          = new AlphaAnimation(1.0f, 0.0f);
             @Override
             public void onAnimationStart(Animation animation) {
             }
 
             @Override
             public void onAnimationEnd(Animation animation) {
                 Message nextMessage = .poll();
 
                 if (nextMessage != null) {
                     show(nextMessage);
                 } else {
                      = null;
                     .setVisibility(.);
                      = false;
                 }
             }
 
             @Override
             public void onAnimationRepeat(Animation animation) {
             }
         });
 
          = new Handler();
     }
 
     public void show(String message) {
         show(messagenull);
     }
    public void show(String messageString actionMessage) {
        show(messageactionMessage, 0);
    }
    public void show(String messageString actionMessageint actionIcon) {
        show(messageactionMessageactionIconnull);
    }
    public void show(String messageString actionMessageint actionIconParcelable token) {
        Message m = new Message(messageactionMessageactionIcontoken);
        if () {
            .add(m);
        } else {
            show(m);
        }
    }
    private void show(Message message) {
        show(messagefalse);
    }
    private void show(Message messageboolean immediately) {
         = true;
         = message;
        .setText(message.mMessage);
        if (message.mActionMessage != null) {
            .setGravity(.);
            .setVisibility(.);
            .setText(message.mActionMessage);
            .setCompoundDrawablesWithIntrinsicBounds(message.mActionIcon, 0, 0, 0);
        } else {
            .setVisibility(.);
        }
        if (immediately) {
            .setDuration(0);
        } else {
        }
    }
        @Override
        public void onClick(View v) {
            if ( != null &&  != null) {
                .onMessageClick(.);
                 = null;
                .removeCallbacks();
                .run();
            }
        }
    };
    public void setOnClickListener(OnMessageClickListener listener) {
         = listener;
    }
    public void clear() {
        .clear();
        .run();
    }
    private Runnable mHideRunnable = new Runnable() {
        @Override
        public void run() {
        }
    };
    public void onRestoreInstanceState(Bundle state) {
        Message currentMessage = state.getParcelable();
        if (currentMessage != null) {
            show(currentMessagetrue);
            Parcelable[] messages = state.getParcelableArray();
            for (Parcelable p : messages) {
                .add((Messagep);
            }
        }
    }
    public Bundle onSaveInstanceState() {
        Bundle b = new Bundle();
        final int count = .size();
        final Message[] messages = new Message[count];
        int i = 0;
        for (Message message : ) {
            messages[i++] = message;
        }
        b.putParcelableArray(messages);
        return b;
    }
    private static class Message implements Parcelable {
        String mMessage;
        String mActionMessage;
        int mActionIcon;
        Parcelable mToken;
        public Message(String messageString actionMessageint actionIconParcelable token) {
             = message;
             = actionMessage;
             = actionIcon;
             = token;
        }
        public Message(Parcel p) {
             = p.readString();
             = p.readString();
             = p.readInt();
             = p.readParcelable(null);
        }
        public void writeToParcel(Parcel outint flags) {
            out.writeString();
            out.writeString();
            out.writeInt();
            out.writeParcelable(, 0);
        }
        public int describeContents() {
            return 0;
        }
        public static final Parcelable.Creator<MessageCREATOR = new Parcelable.Creator<Message>() {
            public Message createFromParcel(Parcel in) {
                return new Message(in);
            }
            public Message[] newArray(int size) {
                return new Message[size];
            }
        };
    }
New to GrepCode? Check out our FAQ X