android 自定义带按钮的Notification及点击事件和伸缩通知栏

1、自定义一个带按钮的Notification布局:layout_notification;

2、创建Notification:

  RemoteViews views = new RemoteViews(getPackageName(),R.layout.layout_nitification);  //自定义的布局视图

  //按钮点击事件:

  PendingIntent homeIntent = PengdingIntent.getBroadcast(this,1,new Intent("action"),PengdingIntent.FLAG_UPDATE_CURRENT);

  views.setOnClickPendingIntent(R.id.btn,homeIntent);    //点击的id,点击事件

  //创建通知:

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext);

    mBuilder.setContent(views)    //设置布局

        .setOngoing(true)    //设置是否常驻,true为常驻

        .setSmallIcon(R.mipmap.ic_laucher)    //设置小图标

        .setTicker("通知来了")        //设置提示

        .setPriority(Notification.PRIORITY_MAX)  //设置优先级

        .setWhen(System.currentTimeMillis())    //设置展示时间

        .setContentIntent(PendingIntent.getBroadcast(this,2,new Intent("action.view"),PengingIntent.FLAG_UPDATE_CURRENT);    //设置视图点击事件

    NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    mNotificationManager.notify(100,mBuilder.build())    //显示通知: 当前notificationid,当前notification

3、创建NotificationBroadcast接收通知:

public class NotificationBroadcast extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();    //动作        collapseStatusBar(context);        //收起通知栏        Intent i = new Intent(context,MainActivity.class);        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    //必须添加,避免重复打开        if (action.equals("com.xczl.smart.notification.home")){            i.putExtra("flag","home");    //传值            context.startActivity(i);        }    } 

public void collapseStatusBar(Context context) {
    try {        Object statusBarManager = context.getSystemService("statusbar");        Method collapse;        if (Build.VERSION.SDK_INT <= 16) {            collapse = statusBarManager.getClass().getMethod("collapse");        } else {            collapse = statusBarManager.getClass().getMethod("collapsePanels");        }        collapse.invoke(statusBarManager);    } catch (Exception localException) {        localException.printStackTrace();    }}

4、MainActivity接收消息:

  覆写 onNewIntent():

@Overrideprotected void onNewIntent(Intent intent) {   String extra = intent.getStringExtra("flag");   if (!TextUtils.isEmpty(extra)){      if (extra.equals("home")){         //接收到值的具体操作      }   }}

5、配置清单:

   MainActivity:设置LanchMode为singleTask

   注册Broadcast:

<receiver    android:name="com.xczl.smart.broadcast.NotificationBroadcast"    android:enabled="true">    <intent-filter>        <action android:name="action"/>        <action android:name="action.view"/>    </intent-filter></receiver>

     配置通知栏伸缩权限:  

<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

      

时间: 2024-10-07 11:39:27

android 自定义带按钮的Notification及点击事件和伸缩通知栏的相关文章

Android自定义Button按钮显示样式 转http://my.oschina.net/amigos/blog/63009

首先写一个定义Button样式的XML文件: 新建Android XML文件,类型选Drawable,根结点选selector,文件名就buton_style吧 ? 1 2 3 4 5 6 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">     <i

Android 自定义带刻度的seekbar

自定义带刻度的seekbar 1.布局 <span style="font-family:SimHei;font-size:18px;"><com.imibaby.client.views.CustomSeekbar android:id="@+id/myCustomSeekBar" android:layout_width="wrap_content" android:layout_height="wrap_cont

Android学习之解决ListView中item点击事件和item中Button点击事件冲突问题

在ListView中添加Button后,如果只是单纯的加入而不加限制的话,ListView的onClick点击事件没有响应,因为Button获取了item的焦点,想要两者都可点击,需要加上如下限制: 在ListView的适配器中的布局文件中添加: (1)在布局文件的根元素上中添加属性android:descendantFocusability="blocksDescendants" (2)在Button中添加属性android:focusable="false"和a

屏蔽用户双击按钮产生的后续点击事件重复发生问题

屏蔽web端双击鼠标产生问题 从上面两张图就可以看出,如果用户误操作双击"确认支付并出保险"按钮,则会出现如上图现象.如何消除此现象呢? 我想到的解决方法:在调用的click事件时,设置一个flag开关,flag类型为boolean型默认值为true的且为全局变量.flag为判断条件放入if语句中,当第一次点击触发事件时,设置flag为false并执行点击事件绑定方法.如此,当用户点击第二次时,flag为false,不执行点击事件绑定方法.这就有效避免了上图问题的发生.       v

Android EditText中插入图片并响应点击事件

EditText中插入图片基本就是两种方法: 1,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml("<img src='" + R.drawable.ohoh + "'/>", imageGetter, null));[/mw_shl_code] 2,通过ImageSpan与SpannableString/SpannableStringBuilder. [m

按钮的三种点击事件

1.直接实现内部类 1 //给button设置点击事件 2 bt_call.setOnClickListener(new MyonClickListener()); 3 4 5 6 //定义一个内部类 实现onClickListener接口 7 private class MyonClickListener implements OnClickListener{ 8 9 @Override//当按钮被按 调用此方法 10 public void onClick(View v) { 11 //业务

Android -- 自定义带进度条的按钮

1. 实现了一个带进度条的按钮,完成后显示提示信息,并设置按钮为不可再次被点击 2. 所需要的图片               3.  代码 MainActivity package com.example.buttondemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View;

【Android UI】自定义带按钮的标题栏

自定义标题栏在很多的android app中很常见,可以说是一种很有用的UI设计方法.自 己也本着学习的态度,经过一番各种坑,终于实现了,现总结如下: 一:大致流程 1.      对指定的android activity设置自定义主题风格,其中自定义主题风格是关键 在android 4.0以上版本中如果使用Theme.Holo或者Theme.Light等,程序会 一直报错误-you cannot combine custom title with other feature titles 2.

【Android】Android自定义带board的圆角控件

介绍 圆角控件常用于头像,按钮,图标等,用途十分广泛,而且常常配合board使用. 在IOS中,UIVIew的CALayer层已经提供了圆角和board的方法,所以圆角控件的制作非常简单,只需要类似以下简单代码即可实现: view.layer.cornerRadius = 20; view.layer.borderColor = [UIColor yellowColor].CGColor; view.layer.borderWidth = 10; view.clipsToBounds = YES