Question

My GOAL is to implement custom toast in my application as follows:

MyCustomToastClass.makeText(context,View,anyDurationInMS);

I want to set the "Toast" gravity, Layout, duration(not just Length.SHORT/LONG)

Things i've tried so far:

  • Class with windowManager object problem was it must implement android system animation in:

    params.windowAnimations

and when I tried to implement my custom animation as followed:

windowManager.addView(mLayout);
Animation AlphaAnimation = new ...

it didn't implement my animation.

  • Class with the rootView element to add the Toast's layout to it: In this way I succeeded to implement everything only when the root view was FrameLayout type (With other layout I couldn't set the "Toast" gravity to center).

I would appreciate if someone has implemented this feature, Or to guide me if i'm missing something in one of my ways.

thanks

Was it helpful?

Solution

Sorry for misunderstand your question

if you want to create an pop up like toast and the duration is up to you maybe you can try to create a custom view that will contain the content you want to be toasted after that you can place your main layout in the frame layout then everytime the user trigger your custom toast you can add the custom view to your frame layout so it'll be positioned in front of your main layout and for fade in fade out animation you can use this

Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
fadeIn.setDuration(1000);

Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator()); //and this
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);

or if you want to use XML

FadeIn

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0.0" 
    android:toAlpha= 1.0" 
    android:duration="1000"    
    android:repeatCount="infinite" 
    android:repeatMode="reverse"
    />

FadeOut

<?xml version="1.0" encoding="utf-8"?> 
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0" 
    android:toAlpha="0.0" 
    android:duration="1000"    
    android:repeatCount="infinite" 
    android:repeatMode="reverse"
    />

and for the time you can use

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
    // FADE OUT THE POP UP/TOAST HERE
  }
}, /*SET THE TIME HERE*/);

I hope this answer is clear enough for you and if you still have some question about my answer don't hesitate to ask in the comment :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top