Как создать окно сообщения о быстром автоматическом отклонении под ANDROID? - PullRequest
0 голосов
/ 24 августа 2010

Мне нужно создать функцию, аналогичную Toast.makeText (...), но быстрее исчезнуть. Я видел такое сообщение в программном обеспечении "Le Monde FR", когда вы нажимаете кнопку на панели инструментов вниз. Его появляются и исчезают очень быстро, если вы переходите к другой иконке. Я ищу такую ​​же функциональность, но не могу понять, как это сделать. Окно сообщений не должно быть модальным, что-то вроде быстрой подсказки. Подсказка должна появляться и быстро исчезать. есть идеи?

Ответы [ 4 ]

4 голосов
/ 24 августа 2010

Создание объекта Toast:

final Toast toast = Toast.makeText(this, "message", Toast.LENGTH_SHORT);

Создание объекта Timer:

Timer timer = new Timer();

Создать задачу, которая отменяет объект Toast:

TimerTask task = new TimerTask() {

  @Override
  public void run() {
    // make sure to cancel the Toast in UI thread
    runOnUiThread(new Runnable() {

      @Override
      public void run() {
        toast.cancel();
      }
    });
  }
};

Запустить задачу отмены через указанный промежуток времени

timer.schedule(task, 100);
1 голос
/ 24 августа 2010

Подсказка может быть сделано через PopupWindows. Я предполагаю, что у вас есть сетка значков и вы хотите предоставить подсказки, которые либо исчезают в зависимости от времени, либо при нажатии другого значка - исправьте меня, если я ошибаюсь:

Создайте глобальное окно mPopupWindow и отклоните его, прежде чем каждый раз раздувать новое. Вы можете использовать потоки, которые отклоняют его для вас в зависимости от времени или установить код в прослушивателе прокрутки.

PopupWindow mPopupWindow = null;

mIconButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    if (mPopupWindow != null) {
                        mPopupWindow.dismiss();
                        mPopupWindow = null;
                    }

                    TextView tv = new TextView(getApplicationContext());
                    tv.setText(tooltipText);
                    tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon,
                            0, 0, 0);
                    mPopupWindow = new PopupWindow(tv);

                    mPopupWindow.setWindowLayoutMode(
                            ViewGroup.LayoutParams.WRAP_CONTENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT);

                    mPopupWindow.showAsDropDown(v);

// write threads to disable it based on time as well

                }
            });
0 голосов
/ 24 августа 2010

вы можете сделать это таким образом.создайте пользовательский тост с текстовым представлением (R.id.text).используйте класс, который выходит из класса CountDownTimer, чтобы контролировать количество времени, за которое вы хотите показать тост.для

например: счетчик MyCount = новый счет MyCount (5000, 1000);

покажет тост в течение 5 секунд.уменьшите значения, чтобы получить желаемые результаты.

LayoutInflater inflater = getLayoutInflater ();

Просмотреть макет = inflater.inflate (R.layout.toastxml, (ViewGroup) findViewById (R.id.toast_layout_root));тост = новый тост (это);toast.setView (layout);

TextView text = (TextView) layout.findViewById (R.id.text);text.setText («Привет! Это тост!»);

MyCount counter = new MyCount (5000,1000);counter.start ();

класс MyCount extends CountDownTimer {

    public MyCount(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }
    @Override
    public void onFinish() {
        toast.cancel();
    }
        @Override
        public void onTick(long millisUntilFinished) {
            toast.show();
        }
    }
0 голосов
/ 24 августа 2010

Вы пытались изменить длительность уведомлений Toast?

Toast.makeText(context, "My message", Toast.LENGTH_SHORT).show();

Я бы опасался, чтобы уведомление появлялось и исчезало быстрее, чем это, так как короткая продолжительность оптимизируется для минимального времени, которое пользователь тратитпосмотрите и прочитайте тост.

...