在屏幕中央使用动画实现自定义视图的最佳方法是什么?

时间:2013-04-12 11:15:02

标签: android android-animation toast android-framelayout android-windowmanager

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

MyCustomToastClass.makeText(context,View,anyDurationInMS);

我想设置“吐司”重力,布局,持续时间(不只是长度。长/长)

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

  • 使用windowManager对象的类 问题是它必须在:

    中实现android系统动画

    params.windowAnimations

当我尝试按照以下方式实现自定义动画时:

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

它没有实现我的动画。

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

如果有人实施了这项功能,我将不胜感激,或者如果我错过了某些方式,那就引导我。

谢谢

1 个答案:

答案 0 :(得分:1)

很抱歉误解了你的问题

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

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

我希望这个答案对你来说足够清楚 如果您对我的回答仍有疑问,请在评论中不要犹豫:)