Если объем новостей очень низкий, вы можете использовать Уведомления в качестве предложенных, но, как я предполагаю, у RSS-канала может быть много вещей для уведомления, он будет заполнять список уведомлений, если вы хотите отображать их по одному.
Хотя тосты нельзя нажимать, вы можете создать занятие со специальной темой и эмулировать поведение тоста.
Подробные инструкции
Хорошо, поехали! =)
Чтобы прояснить ситуацию, я написал полный пример приложения, выполняющего роль тоста.
Первое, что нам нужно, это класс, который будет действовать как тост. Этот класс ничего не будет делать, кроме как показать себя и закончить через определенное время. Вы можете обрабатывать и другие события в соответствии с вашими потребностями, но это минимум, необходимый для воспроизведения поведения тоста.
package com.rchiossi.popup;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class MyPopup extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_popup);
String message = getIntent().getStringExtra("message");
TextView messageView = (TextView) findViewById(R.id.message);
messageView.setText(message);
Handler handler = new Handler();
long delay = 1000;
handler.postDelayed(new Runnable() {
@Override
public void run() {
MyPopup.this.finish();
}
}, delay);
}
}
Как вы можете видеть, этот класс получает строку, переданную в качестве Extra для намерения, которое запустило действие, устанавливает отображаемый текст и устанавливает таймер в 1000 мс для вызова метода finish (). Время отображения может быть скорректировано, чтобы лучше соответствовать опыту пользователя.
Схема для этого действия очень проста:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@android:drawable/toast_frame"/>
</RelativeLayout>
Этот макет - не что иное, как пустой экран с текстом в центре. Хитрость заключается в том, чтобы установить фон TextView как «@android: drawable / toast_frame», который является фоном по умолчанию для тостов.
А теперь, чтобы сделать последний штрих, вам нужно установить тему в AndroidManifest.xml, установить прозрачный фон приложения и удалить заголовок.
<activity android:name=".MyPopup"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
Хитрость в этом заключается в свойстве android: theme. Theme.Translucent.NoTitleBar даст нам Activity с прозрачным фоном и без заголовка. Поэтому, когда отображается действие, будет виден только текст и фон тоста.
Хорошо, теперь у вас заблокирован и загружен рабочий поддельный тост. Но как это использовать ?!
Сначала мы создаем фиктивное приложение для запуска всплывающих окон. Вам не понадобится это в вашем проекте, так как ваш собственный класс будет запускать тост.
package com.rchiossi.popup;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
/** Called when the activity is first created. */
private int mCount = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Main.this,MyPopup.class);
intent.putExtra("message", "My popup number " + mCount);
mCount++;
startActivity(intent);
}
});
}
}
Это приложение в основном просто кнопка, которая при нажатии показывает тост с сообщением. Как видите, чтобы сообщить приложению Toast, какое сообщение отображать, мы используем метод Intent.putExtra(name,message)
. Эти данные возвращаются, когда MyPopup начинает использовать метод Intent.getStringExtra(name)
.
Исходный код моего примера вы можете получить здесь:
http://www.mediafire.com/file/7vmuy8244vwh4dk/PopItUp.zip
Надеюсь, это вам поможет. =)