Android笔记:Notification的使用总结

当前位置:首页 » 学习
In 学习, 笔记  @2015-08-19

关于Android通知栏Notification使用的总结。

重点知识点:

  • 使用Notification.builder类的系列set方法设置通知栏的参数;
  • setContentIntent()方法添加PendingIntent达到点击启动Activity的功能。
  • 调用builder.build()方法返回一个notification对象;
  • 然后利用notification的一些属性设置它的声音,震动,灯光,点击关闭等等特性。
    Android通知栏Notification使用的总结

notification点击后消失两种方法:

  1. 在点击启动的新Activity中调用notificationManager.cancel();
  2. 给notification.flags = Notification.FLAG_AUTO_CANCEL;

notification常驻状态栏的两个flag

  1. FLAG_ONGOING_EVENT //提示用户程序正在运行,如正在通话……
  2. FLAG_NO_CLEAR //clear按钮将无法清除这个notification

案例代码:

package com.m1910.notificationtest;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

    private Button sendNotice;
    String tickerText = "This is ticker text.";
    String contentTitle = "This is content title.";
    String contentText = "This is content Text.";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sendNotice = (Button) findViewById(R.id.send_notice);
        sendNotice.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.send_notice:
            // 实例化一个NotificationManager对象。
            NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            // 创建intent用来启动NotificationActivity
            Intent intent = new Intent(this, NotificationActivity.class);
            // 将intent传入到PendingIntent对象中用getActivity()方法实例化一个PendingIntent对象。
            // 这里还可以使用getService()以及getBroadcast()方法,传入的参数一样。
            PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
            // 实例化一个Builder对象。
            Notification.Builder nBuilder = new Notification.Builder(this);
            // 利用Builder对象的一系列set方法设置参数,其中注意使用setContentIntent()传入上面的PendingIntent对象pi;
            // builder()方法返回一个Notification对象
            Notification notification = nBuilder.setContentTitle(contentTitle).setContentText(contentText)
                    .setTicker(tickerText).setSmallIcon(R.drawable.ic_launcher).setContentIntent(pi).build();
            // 设置提示音
            notification.defaults = Notification.DEFAULT_SOUND;
            // 设置点击后自动清除通知
            notification.flags = Notification.FLAG_AUTO_CANCEL;
            // 调用NotificationManager的notify()方法启动这个notification;
            // 第一个参数APP中这个notification唯一标识符,第二个是要显示的Notification对象。
            manager.notify(1, notification);
            break;
        default:
            break;
        }
    }
}

Notification进阶部分:

  1. 如网易云音乐那样的可操作的通知栏需要用到相对比较复杂的布局使用Notification.BuildersetContent(RemoteViews views)设置自定义布局,暂时还没做过;
  2. android4.1之后,有小布局,大布局,下滑后的通知栏,选中的状态栏,以及锁屏状态的通告,这些都是可以深入研究的方向。
  3. 前台服务的使用,创建服务的时候调用startForeground()方法启动notification,让服务在状态栏常驻。
标签: , , , ,   评论: 8枚 

Android编程遇到的小问题20150819

当前位置:首页 » 学习
In 学习, 笔记  @2015-08-18

问题一:
代码:

notification = new Notification.Builder(ctx)
                .setContentTitle("Title").setContentText("Text")
                .setSmallIcon(R.drawable.ic_launcher).build();

提示错误:

Call requires API level 16 (current min is 14): android.app.Notification.Builder#build

原因见文档:
public Notification build ()
Combine all of the options that have been set and return a new Notification object.
Added in API level 16
Notification 的 build ()方法是在API level 16才有的;
而我的适配版本是API level 14,需要使用getNotification ()才行。

问题二:
adb服务出现异常,如果想手工关闭adb服务,可以使用下面的命令:

关闭adb服务命令:adb kill-server
启动adb服务命令:adb start-server

问题三:
eclipse下按alt+/快捷键无代码提示故障:
也不知道为啥会出现这个问题,我的情况解决方法如下:
Window – Preferences – General – Keys
1/Restore Defaults恢复默认设置;
2/把word completion的快捷键设置alt+C
3/把Content Assist的快捷键由ctrl+space改成alt+/
4/window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾;

标签: , ,   评论: 2枚 

Windows系统下Git安装及常用命令整理

当前位置:首页 » 学习
In 学习  @2015-08-13

关于Git的安装使用及命令这些知识,网络上有很多前辈已经为大家准备很多教程,首先要好好感谢他们,本文后面也会有相关的资料供参考,在这里整理一下自己会用到的,大约是最简单最直接的了,复杂的我估计暂时也接触不到就先不学那么深了,因为我目前用Windows10,所以就只涉及到Win系统下的使用,只用命令行。
Windows系统下Git安装及常用命令整理

安装Git:

http://msysgit.github.io/下载一个msysgitnext一路默认安装就好了。
安装完开始菜单找到Git->Git Bash就进入Git命令行操作了,实际感觉应该和LINUX以及UNIX是一样的,建议所有Git操作都用命令行进行而不用可视化的窗口,这样换个开发环境换个系统一样的使用。

Git的简单配置:

#配置使用git仓库的人员姓名
$ git config --global user.name "Name"
#配置使用git仓库的人员email
$ git config --global user.email you@example.com
#配置到缓存 默认15分钟
$ git config --global credential.helper cache 
#修改缓存时间
$ git config --global credential.helper 'cache --timeout=3600'   
$ git config -1           #列举所有配置,根据需要配置

创建代码库repository:

$ cd e:                   #进入e盘
$ mkdir mygit             #创建目录mygit
$ cd learngit             #进入目录mygit
$ pwd                     #显示当前目录
/e/mygit
$ git init                #通过这个命令创建代码库
Initialized empty Git repository in /e/mygit/.git/

当然也可以在已经有的目录下创建代码库,创建成功在目录下生成一个隐藏文件夹.git用来记录所有信息,不要随意修改删除这个目录,创建代码库的目录不要有中文。

Git代码提交暂存区

提交本地代码分两步:

第一步,将代码用add命令添加到暂存区Staging Area

$ git add AndroidManifest.xml             #添加单个AndroidManifest.xml文件
$ git add src                             #添加src目录
$ git add .                               #添加目录下的全部文件

第二步,将Staging Area中的代码提交到代码库repository

$ git commit –m "你的注释"                 #将中转区已修改代码提交到代码库

要随时掌握暂存区当前的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

在这里遇见一点小插曲,我在添加整个目录运行git add .命令的时候提示下面的错误;

warning: LF will be replaced by CRLF in XXXXXX

遇到这个问题是因为windows中的换行符为 CRLF, 而在linux下的换行符为:LFGit会自动把LF替换成CRLF,解决这个问题需要删除之前的.git文件夹,重新创建库,并运行下面代码设置关掉这个自动替换的选项;

$ git config --global core.autocrlf false

版本回退和撤销修改:

首先你得清楚上面那张图里面的三个概念,工作区,暂存区,代码库,提交代码第一步是通过add将修改过的需要提交的代码从工作区添加到暂存区,第二部是通过commit将暂存区的代码全部提交到代码库。

版本回退是回退到已经提交到代码库中的版本,涉及到以下命令;

$ git reset --hard commit_id        #回退到某个指定版本,commit_id指版本号HEAD指当前版本HEAD^指上一个版本,以此类推
$ git log                           #回到过去,查看提交历史,以便确定要回退到哪个版本
$ git reflog                        #回到未来,查看命令历史,以便确定要回到未来的哪个版本

撤销修改;
场景1:修改工作区某个文件,想直接丢弃工作区的修改时,用命令git checkout -- file
场景2:不但工作区某个文件的内容,还add到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

先学习到这里,后面再学习GitHub结合使用远程代码库。

标签: , , , ,   评论: 16枚