2

私の目標は、次のようにアプリケーションにカスタム トーストを実装することです。

MyCustomToastClass.makeText(context,View,anyDurationInMS);

「Toast」のグラビティ、レイアウト、デュレーションを設定したい (Length.SHORT/LONG だけでなく)

私がこれまでに試したこと:

  • windowManager オブジェクトの問題があるクラスは、Android システムのアニメーションを次の場所に実装する必要があります。

    params.windowAnimations

そして、次のようにカスタムアニメーションを実装しようとしたとき:

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

それは私のアニメーションを実装しませんでした。

  • Toast のレイアウトを追加する rootView 要素を持つクラス: この方法で、ルート ビューが FrameLayout タイプの場合にのみすべてを実装することに成功しました (他のレイアウトでは、「Toast」の重力を中央に設定できませんでした)。

誰かがこの機能を実装している場合、または私の方法のいずれかで何かが欠けている場合に私を案内していただければ幸いです。

ありがとう

4

1 に答える 1

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

この回答があなたにとって十分に明確であることを願っています。私の回答についてまだ質問がある場合は、遠慮なくコメントで質問してください:)

于 2013-04-12T11:21:38.013 に答える