本文介绍: 本节带来的是Android用于状态栏显示通知信息控件:Notification,相信大部分 学Android都对他都很熟悉,而网上很多关于Notification使用教程都是基于2.x的,而 现在普遍的Android设备基本都在4.x以上,甚至是5.0以上的都有;.setSound(Uri.parse(“android.resource://” + getPackageName() + “/” + R.raw.biaobiao)) //设置自定义提示音。//取消Notification

本节引言

本节带来的是Android中用于状态栏显示通知信息控件:Notification,相信大部分 学Android都对他都很熟悉,而网上很多关于Notification使用教程都是基于2.x的,而 现在普遍的Android设备基本都在4.x以上,甚至是5.0以上的都有;他们各自的Notification 都是不一样的!而本节大家讲解的是基于4.x以上的Notification,而5.0以上的Notification 我们会在进阶教程的Android 5.0新特性章节进行讲解


1.设计文档部分解读

1)Notification基本布局

上面的组成元素依次是:


2)扩展布局

在 Jelly Bean 中你可以通知提供更多事件细节。你可以通过扩展布局显示消息的前几行或者图片预览。这样用户可以看多更多的内容 – 有时甚至可以看到整个消息用户可以通过 pinchzoom 或者双手指滑动打开扩展布局。Android 为单条消息提供了两种扩展布局 (文字图像) 供你开发应用使用

关于其他一些设计的东西,就不一一提及了,有兴趣的自行查看上面提供的API文档知道下 这个Notification在4.x以上的版本可以多种多样就好!我们更多的时候关注的是 如何代码使用这个东西,下面我们就来学习下Notification用法


2.Notification基本使用流程

状态通知栏主要涉及到2个类:Notification 和NotificationManager

Notification通知信息类,它里面对应通知栏的各个属性

NotificationManager:是状态栏通知管理类,负责通知清除通知等操作

使用基本流程


3.设置相关的一些方法

Notification.Builder mBuilder = new Notification.Builder(this);

后再调用下述的相关方法进行设置:(官方API文档Notification.Builder) 常用的方法如下


4.代码示例:最常见的Notification:

下面我们来写一个简单例子体验下Notification的用法

运行效果图

关键代码

这里直接贴MainActivity.java代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Context mContext;
    private NotificationManager mNManager;
    private Notification notify1;
    Bitmap LargeBitmap = null;
    private static final int NOTIFYID_1 = 1;

    private Button btn_show_normal;
    private Button btn_close_normal;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
        //创建大图标的Bitmap
        LargeBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.iv_lc_icon);
        mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        bindView();

    }


    private void bindView() {
        btn_show_normal = (Button) findViewById(R.id.btn_show_normal);
        btn_close_normal = (Button) findViewById(R.id.btn_close_normal);
        btn_show_normal.setOnClickListener(this);
        btn_close_normal.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_show_normal:
                //定义一个PendingIntent点击Notification后启动一个Activity
                Intent it = new Intent(mContext, OtherActivity.class);
                PendingIntent pit = PendingIntent.getActivity(mContext, 0, it, 0);

                //设置图片,通知标题,发送时间,提示方式属性
                Notification.Builder mBuilder = new Notification.Builder(this);
                mBuilder.setContentTitle("叶良辰")                        //标题
                        .setContentText("我有一百种方法让你呆不下去~")      //内容
                        .setSubText("——记住我叫叶良辰")                    //内容下面的一小段文字
                        .setTicker("收到叶良辰发送过来的信息~")             //收到信息后状态栏显示的文字信息
                        .setWhen(System.currentTimeMillis())           //设置通知时间
                        .setSmallIcon(R.mipmap.ic_lol_icon)            //设置小图标
                        .setLargeIcon(LargeBitmap)                     //设置大图标
                        .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE)    //设置默认的三色灯与振动器
                        .setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.biaobiao))  //设置自定义的提示音
                        .setAutoCancel(true)                           //设置点击后取消Notification
                        .setContentIntent(pit);                        //设置PendingIntent
                notify1 = mBuilder.build();
                mNManager.notify(NOTIFYID_1, notify1);
                break;

            case R.id.btn_close_normal:
                //除了可以根据ID来取消Notification外,还可以调用cancelAll();关闭应用产生的所有通知
                mNManager.cancel(NOTIFYID_1);                          //取消Notification
                break;

        }
    }
}

原文地址:https://blog.csdn.net/leyang0910/article/details/131135749

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_26196.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注