android 自定义NotifiCation

原创 2015年11月17日 19:18:42

最近在做一个项目的时候,遇到一个这样的需求  客户需要在开机的时候有他们的广告,同时这个广告要一直都存在,先看一下效果。当然这里只计论技术,不讨论别的东西。

            

最终实现的效果是这样子,在这里说一下它里面所用到的技术及应该要注意哪些地方。

这里所用到的技术是  Notifaction ,这里所使用的布局是自定义View,当然一眼就只道这个布局很简单,只有一个 ImageView。

先上布局的代码。

<span style="font-size:14px;">custom_remote_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
<span style="background-color: rgb(153, 255, 255);">    <ImageView 
        android:id="@+id/imag"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/ims_contentview"
        android:paddingBottom="0dp"
        android:paddingTop="0dp"
        android:scaleX="1"
        android:scaleY="1"
        />
    </span>
</RelativeLayout></span>

上面的代码是自定义 notifaction 的xml文档。

当然还有一个 就是在主布局里面 去点一下,不点也行,嘿嘿。


下面是 activity_main.xml的代码 

<span style="font-size:14px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
<span style="background-color: rgb(153, 255, 255);">    <Button 
        android:id="@+id/notification_test_button"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:text="发送notification"
        android:layout_centerInParent="true"
        
        /></span><span style="background-color: rgb(255, 102, 102);">
</span></RelativeLayout></span>


下面是Java 代码 ,这里的代码 在 Activity 里面实现

<span style="font-size:14px;">package com.example.notificationtest;


import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RemoteViews;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	  Button sendNotiBtn;
	  static NotificationManager        notifyManager;
	  static NotificationCompat.Builder mBuilder;
	
	  public void initNotify(){
		    notifyManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
		    mBuilder = new NotificationCompat.Builder(this);
		    mBuilder.setContentIntent(PendingIntent.getActivity(this, 1, new Intent(), 0));
		    mBuilder.setPriority(Notification.PRIORITY_DEFAULT);
		    mBuilder.setOngoing(true);
		    mBuilder.setSmallIcon(R.drawable.ic_launcher);
		    mBuilder.setAutoCancel(false);
		  }
	  
	  public void showNotifiCation(){
		    RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.custom_remote_view);
//	        remoteViews.setProgressBar(R.id.dxy_custom_notify_progress, 100, (int) percent, false);
	        mBuilder.setContent(remoteViews);
	        mBuilder.setContentIntent(PendingIntent.getActivity(this, 1, new Intent(), 0));
	        Notification notify = mBuilder.build();
	        notify.contentView = remoteViews;
	        notifyManager.notify(103, notify);
	  }
	  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initNotify();
        sendNotiBtn = (Button)this.findViewById(R.id.notification_test_button);
        sendNotiBtn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {			
				showNotifiCation();
			}
		});
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}</span>

代码确实比较简单,希望对需要的人有所帮助。

下面给出 Demo 的下载地址 

http://download.csdn.net/detail/qijian0503/9277725







实现自定义布局的Notification

上一节中,我们实现了自己的notification,相信大家都有了一些认识,在最后也接受了利用RemoteView来实现自定义布局的notification,这里就来举一个示例,方便理解。     ...
  • chenlong12580
  • chenlong12580
  • 2011年12月24日 11:00
  • 18288

Android Notification自定义样式

最近开发一个app需要显示Notification, 但是这个Notification的title 需要显示成我们另一只app的名字。查找了很多资料,发现如果用系统默认的样式,这是做不到的。所以只能自...
  • jorney_dong
  • jorney_dong
  • 2017年05月19日 08:45
  • 476

Android-自定义Notification

Android-自定义Notification
  • wwj_748
  • wwj_748
  • 2014年04月27日 12:11
  • 8600

android自定义Notification通知栏实例

项目有个需求,需要在发送Notification的时候动态给定url的图片。大概思路如下:自己定义一个Notification的布局文件,这样能够很方便设置View的属性。     首先加载网络图片...
  • zhangcanyan
  • zhangcanyan
  • 2016年10月19日 16:11
  • 853

Notification 自定义声音提示

在Notification中使用自定义的声音,自己要处理声音提示这个方法:具体 NotificationCompat.Builder builder = new NotificationCompa...
  • agoodcoolman
  • agoodcoolman
  • 2016年06月14日 19:26
  • 1386

Android中通知栏Notification详解以及自定义Notification

audioStreamType 当声音响起时,所用的音频流的类型  contentIntent 当通知条目被点击,就执行这个被设置的Intent.  contentView 当通知被显示在状态条上的时...
  • daitu_liang
  • daitu_liang
  • 2015年12月10日 11:00
  • 8526

Android Notification自定义通知样式你要知道的事

直接来一些基础知识: 基本属性 public Builder setTicker(CharSequence tickerText) 设置状态栏开始动画的文字   public Buil...
  • u011200604
  • u011200604
  • 2016年09月08日 13:51
  • 21079

Android 自定义通知Notification 适配不同背景颜色

Android 自定义通知Notification 适配不同背景颜色
  • bitian123
  • bitian123
  • 2016年10月24日 17:10
  • 3594

通知栏Notification自定义视图方法(显示进度条)

通知栏Notification自定义视图方法(显示进度条) 转自:http://www.devdiv.com/Android-%E9%80%9A%E7%9F%A5%E6%A0%8FNotif...
  • mengtianqq
  • mengtianqq
  • 2016年11月28日 21:45
  • 752

通过remoteViews自定义Notification通知栏的布局

remoteViews,是一种远程view,通过跨进程更新自己的界面,主要用于通知栏和桌面小部件的开发过程中。1、自定义Notification布局public class MainActivity ...
  • AsiaLYF
  • AsiaLYF
  • 2016年11月10日 19:24
  • 714
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 自定义NotifiCation
举报原因:
原因补充:

(最多只允许输入30个字)