android实战用户接口第一篇——notification
时间:2011-03-27 来源:小小石头
notification之toast:
1.创建一个toast:直接在Activity类里调用
Toast.makeText(this.getApplicationContext(), "hello wrold", Toast.LENGTH_LONG).show();
就可以了,这里有一点要说明下,函数的第一个参数要求一个Context对象,你可以直接用this,但这样容易造成内存泄漏,可以用this.getApplicationContext()来代替。
2.创建一个自定义的toast:首先你要根据需求为你的toast设计一个layout,并放上合适的控件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:background="@null" > <ImageView android:layout_height="fill_parent" android:id="@+id/image" android:layout_width="wrap_content" android:layout_marginRight="10dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" /> </LinearLayout>
前台代码是
Toast toast = new Toast(this.getApplicationContext()); LayoutInflater inflater = this.getLayoutInflater(); View toastLayout = inflater.inflate(R.layout.customtoast, null); TextView text = (TextView) toastLayout.findViewById(R.id.text); text.setText( "hello I am custom toast!"); ImageView image = (ImageView) toastLayout.findViewById(R.id.image); image.setBackgroundResource(R.drawable.icon); toast.setView(toastLayout); toast.setDuration(Toast.LENGTH_LONG); toast.show();
这样便可以得到我们梦寐以求的toast了。
notification之Dilog:
用setXXXButton()创建一个带button的dilog:
//实例化一个builder对象,用来创建dialog AlertDialog.Builder builder = new AlertDialog.Builder(this); //添加两个button给biulder builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); //生了,生了,biulder生了 AlertDialog alert = builder.create(); //显示dialogs alert.show();用 setItems()创建一个带list的dialog
final CharSequence[] items = {"Red", "Green", "Blue"};android还提供了progressbar等一些常用的dialog,不建议搞非主流,就是不要既有button又想加list顺便还想带个progressbar,否则会在设置上有冲突,引起混乱,如果实在是要用很多种控件的话,可以自定义dialog,首先是设计一个layout文件(跟上面的toast一样,这里代码就免了^_^),然后在前台添加代码
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
Dialog dialog = new Dialog(this);//贼里官方给的是getApplicationContext(),但事实是会出错!如果想让dialog退出,调用dismiss()就可以了。
dialog.setContentView(R.layout.customtoast);
dialog.setTitle("Custom Dialog");
TextView text = (TextView);
dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView);
dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.icon);
dialog.show();
notification之Status Bar Notifications:
一般用在service里,首先要创建一个服务,然后在服务里加入代码
NotificationManager nm = (NotificationManager) this.getSystemService(this.NOTIFICATION_SERVICE); int icon = R.drawable.icon; CharSequence tickerText = "this is in service"+i++; long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when); Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"+i++; Intent notificationIntent = new Intent(this, notificationDemo.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); nm.notify(1, notification);未完待续...
相关阅读 更多 +