第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Android--状态栏的图标和文字提醒/NotificationManager与Notification对象的应用

Android--状态栏的图标和文字提醒/NotificationManager与Notification对象的应用

时间:2023-10-23 06:12:38

相关推荐

Android--状态栏的图标和文字提醒/NotificationManager与Notification对象的应用

首先,我们需要看一张截图,说明这个例子的作用是什么。

这个例子用到的东西很多,首先,我们需要现在布局文件中定义一个Spinner,代码如下:

<Spinnerandroid:id="@+id/mySpinner"android:layout_width="200px"android:layout_height="wrap_content"android:layout_x="30px"android:layout_y="60px"/>

当然,有了Spinner之后,我们需要定义其中子TextView显示的方式,需要一个以TextView为根标签的布局文件,代码如下:

<TextView xmlns:android="/apk/res/android"android:id="@+id/text1"android:layout_width="fill_parent"android:layout_height="30sp"android:singleLine="true"android:textSize="20sp"style="?android:attr/spinnerDropDownItemStyle"/>

生成Notification的代码如下:

/* 建立新的Intent,作为点选Notification留言条时,* 会执行的Activity */ Intent notifyIntent=new Intent(this,EX05_08_1.class); notifyIntent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);/* 建立PendingIntent作为设定递延执行的Activity */ PendingIntent appIntent=PendingIntent.getActivity(EX05_08.this,0,notifyIntent,0);/* 建立Notication,并设定相关参数 */ Notification myNoti=new Notification();/* 设定statusbar显示的icon */myNoti.icon=iconId;/* 设定statusbar显示的文字讯息 */myNoti.tickerText=text;/* 设定notification发生时同时发出预设声音 */myNoti.defaults=Notification.DEFAULT_SOUND;/* 设定Notification留言条的参数 */myNoti.setLatestEventInfo(EX05_08.this,"MSN登入状态",text,appIntent);/* 送出Notification */myNotiManager.notify(0,myNoti);

下面给出完整的程序代码:

1.Notification打开的页面代码:

/* 当user点击Notification留言条时,会执行的Activity */public class EX05_08_1 extends Activity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);/* 发出Toast */Toast.makeText(EX05_08_1.this, "这是模拟MSN切换登录状态的程序", Toast.LENGTH_LONG).show(); finish();}}

2.主程序代码:

public class EX05_08 extends Activity{/*声明对象变量*/private NotificationManager myNotiManager;private Spinner mySpinner;private ArrayAdapter<String> myAdapter;private static final String[] status ={ "在线","离开","忙碌中","马上回来","脱机" };@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);/* 载入main.xml Layout */setContentView(R.layout.main);/* 初始化对象 */myNotiManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);mySpinner=(Spinner)findViewById(R.id.mySpinner);myAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,status);/* 套用myspinner_dropdown自定义下拉菜单样式 */myAdapter.setDropDownViewResource(R.layout.myspinner_dropdown);/* 将ArrayAdapter加入Spinner对象中 */mySpinner.setAdapter(myAdapter);/* 将mySpinner加入OnItemSelectedListener */mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3){/* 依照选择的item来判断要发哪一个notification */if(status[arg2].equals("在线")){setNotiType(R.drawable.msn,"在线");}else if(status[arg2].equals("离开")){setNotiType(R.drawable.away,"离开");}else if(status[arg2].equals("忙碌中")){setNotiType(R.drawable.busy,"忙碌中");}else if(status[arg2].equals("马上回来")){setNotiType(R.drawable.min,"马上回来");}else{setNotiType(R.drawable.offine,"脱机");}}@Overridepublic void onNothingSelected(AdapterView<?> arg0){}});}/* 发出Notification的method */private void setNotiType(int iconId, String text){/* 建立新的Intent,作为点选Notification留言条时,* 会执行的Activity */ Intent notifyIntent=new Intent(this,EX05_08_1.class); notifyIntent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);/* 建立PendingIntent作为设定递延执行的Activity */ PendingIntent appIntent=PendingIntent.getActivity(EX05_08.this,0,notifyIntent,0);/* 建立Notication,并设定相关参数 */ Notification myNoti=new Notification();/* 设定statusbar显示的icon */myNoti.icon=iconId;/* 设定statusbar显示的文字讯息 */myNoti.tickerText=text;/* 设定notification发生时同时发出预设声音 */myNoti.defaults=Notification.DEFAULT_SOUND;/* 设定Notification留言条的参数 */myNoti.setLatestEventInfo(EX05_08.this,"MSN登入状态",text,appIntent);/* 送出Notification */myNotiManager.notify(0,myNoti);} }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。