2

我的目标是在我的应用程序中实现自定义 toast,如下所示:

MyCustomToastClass.makeText(context,View,anyDurationInMS);

我想设置“Toast”重力、布局、持续时间(不仅仅是 Length.SHORT/LONG)

到目前为止我尝试过的事情:

  • 具有 windowManager 对象问题的类是它必须在以下位置实现 android 系统动画:

    params.windowAnimations

当我尝试如下实现我的自定义动画时:

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

它没有实现我的动画。

  • 使用 rootView 元素向其添加 Toast 的布局:通过这种方式,只有当根视图为 FrameLayout 类型时,我才能成功实现所有内容(对于其他布局,我无法将“Toast”重力设置为中心)。

如果有人实现了此功能,我将不胜感激,或者如果我在其中一种方式中遗漏了某些东西,请指导我。

谢谢

4

1 回答 1

1

很抱歉误解了你的问题

如果您想创建一个像 toast 一样的弹出窗口并且持续时间取决于您,也许您可​​以尝试创建一个自定义视图,其中包含您想要烘烤的内容,之后您可以将主布局放置在框架布局中,然后每次用户触发您的自定义 toast 您可以将自定义视图添加到您的框架布局中,以便将其放置在您的主布局前面,并且对于淡入淡出动画,您可以使用它

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);

或者如果你想使用 XML

淡入

<?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"
    />

消退

<?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"
    />

在你可以使用的时候

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

我希望这个答案对您来说足够清楚,如果您对我的回答仍有疑问,请随时在评论中提问:)

于 2013-04-12T11:21:38.013 回答