Для того чтобы можно было начать работать с данным классом, вам нужно выполнить следующее:
I. Создаём layout файл notify.xml, это будет содержимым, для наших всплывающих сообщений:
II. Создаём файлы fade_in и fade_out для нашей анимации:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/notify_content" android:visibility="invisible"> <TextView android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:textColor="#fffefe"/> </LinearLayout>
res/anim/fade_in
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <alpha android:duration="1000" android:fromAlpha="0.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0"/> </set>
res/anim/fade_out
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <alpha android:duration="1000" android:fromAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="0.0"/> </set>III. Создаём класс Notify, который и будет отвечать за наши всплывающие сообщения:
Теперь можем в нашем Application определить как для примера, следующий метод и вызвать его:public class Notify { private Context context; private View view; private Handler handler = new Handler (); /** * * @param context */ public Notify(Context context) { this.context = context; WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams (); layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; layoutParams.format = PixelFormat.TRANSLUCENT; layoutParams.type = WindowManager.LayoutParams.TYPE_TOAST; LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); view = layoutInflater.inflate (R.layout.notify, null); TextView notifyMessage = (TextView) view.findViewById (R.id.message); notifyMessage.setSelected (true); ViewGroup viewGroup = new FrameLayout(context); WindowManager mWindowManager = (WindowManager) context.getSystemService (Context.WINDOW_SERVICE); mWindowManager.addView (viewGroup, layoutParams); viewGroup.addView (view); } /** * * @param animation * @param resIdMessage * @param delayMillis */ public void show (boolean animation, int resIdMessage, long delayMillis) { show (animation, context.getText(resIdMessage), delayMillis); } /** * * @param animation * @param message * @param delayMillis */ public void show (boolean animation, CharSequence message, long delayMillis) { handler.removeCallbacks(runnable); if (delayMillis > 0) { handler.postDelayed (runnable, delayMillis); } ((TextView) view.findViewById (R.id.message)).setText(message); if (animation) { view.startAnimation (AnimationUtils.loadAnimation (context, R.anim.fade_in)); } } /** * */ public void hide (boolean animation) { handler.removeCallbacks (runnable); if (animation) { view.startAnimation (AnimationUtils.loadAnimation (context, R.anim.fade_out)); } else { view.clearAnimation(); } } /** * */ private Runnable runnable = new Runnable () { /** * */ @Override public void run () { hide (true); } }; }
public class App extends Application { private static Notify notify; /** * */ @Override public void onCreate () { super.onCreate (); notify = new Notify (this); } /** * * @return */ public static Notify getNotify () { return notify; } }
Только надо добавить r.anim.fade_in и r.anim.fade_out. В посте про это не написано.
ОтветитьУдалитьДобавил!
ОтветитьУдалитьBetway: Online Casino, Poker, Bingo - Kardangpintar
ОтветитьУдалитьBetway is the one of the largest online casinos in 인카지노 India. Established kadangpintar in 2012 and the world's largest online casino, 메리트 카지노 주소 you can find a wide selection of