• android 实现自己定义状态栏通知(Status Notification)


    在android项目的开发中,有时为了实现和用户更好的交互,在通知栏这一小小的旮旯里,我们通常须要将内容丰富起来,这个时候我们就须要去实现自己定义的通知栏,比如以下360或者网易的样式:

    首先我们要了解的是 自己定义布局文件支持的控件类型:Notification的自己定义布局是RemoteViews,因此,它仅支持FrameLayout、LinearLayout、RelativeLayout三种布局控件,同一时候支持AnalogClock、Chronometer、Button、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView和AdapterViewFlipper这些UI控件。对于其它不支持的控件,使用时将会抛出ClassNotFoundException异常。

    同一时候呢我们还要了解的是Notification支持的Intent类型(都是PendingIntent类的实例)。

    以下就是详细的实现了:在这个通知栏里 我们放一个进度条

    //Get the notification manager
        	String ns = Context.NOTIFICATION_SERVICE;
        	NotificationManager nm = 
        		(NotificationManager)ctx.getSystemService(ns);
        	
        	//Create Notification Object
    		int icon = R.drawable.robot;
    		CharSequence tickerText = "Hello";
    		long when = System.currentTimeMillis();
    		
    		Notification notification = 
    			new Notification(icon, tickerText, when);
    
    		//Set ContentView using setLatestEvenInfo
    	    Intent intent = new Intent(Intent.ACTION_VIEW);
    	    intent.setData(Uri.parse("http://www.google.com"));
    	    PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, 0);
    //	    notification.setLatestEventInfo(ctx, "title", "text", pi);// 使用默认的样式
    	    notification.contentIntent = pi;
    	    notification.contentView = new RemoteViews(ctx.getPackageName(),R.layout.noti);
    	    //Send notification
    		nm.notify(1, notification);

    实现的效果例如以下图:(右边为系统默认的样式)

               

    这仅仅是一个简单的演示样例,为了实现我们自己的效果 我们仅仅须要改动布局文件就ok了。


  • 相关阅读:
    /tmp 和 /var/tmp 的区别
    PostgreSQL AS不忽略大小写
    PostgreSQL 命令
    DB Stack Overflow
    组合唯一约束
    python3学习笔记(9)_closure
    python3学习笔记(8)_sorted
    python3学习笔记(7)_listComprehensions-列表生成式
    python3学习笔记(6)_iteration
    python3学习笔记(5)_slice
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3915484.html
Copyright © 2020-2023  润新知