`

自定义Diaolg与系统消息通知

阅读更多

        自定义Dialog

        一.使用DialogActivity将一个activity变成Dailog样式显示。

           Dialog有很多类型(单选,多选,进度条,简单显示文本,自定义等)

 public class DialogActivity extends Activity {       
       private final static int  SIMPLE_DIALOG= 1;
	private final static int  CUSTOM_VIEW_DIALOG=2;	
	private final static int  PROGRESS_DIALOG=3;
	Dialog d;		
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);		
		this.setContentView(R.layout.dialog);
		
		findViewById(R.id.button1).setOnClickListener(new Button.OnClickListener(){
			@Override
			public void onClick(View arg0) {				
				DialogActivity.this.showDialog(SIMPLE_DIALOG, null);
			}
		});
				
		findViewById(R.id.button2).setOnClickListener(new Button.OnClickListener(){

			@Override
			public void onClick(View arg0) {								DialogActivity.this.showDialog(CUSTOM_VIEW_DIALOG, null);
			}
		});
		
		findViewById(R.id.button3).setOnClickListener(new Button.OnClickListener(){

			@Override
			public void onClick(View arg0) {				
				DialogActivity.this.showDialog(PROGRESS_DIALOG, null);
			}
		});		
	
	@Override
	protected Dialog onCreateDialog(int id, Bundle args) {
		//简单的Dialog ,显示标题,内容,图标
		if(SIMPLE_DIALOG==id)
			return new AlertDialog.Builder(this)
					.setTitle("tille")
					.setIcon(android.R.drawable.ic_dialog_alert)
					.setMessage("thisis message")			
					.create();
                   //自定义布局的Dialog
		else if(CUSTOM_VIEW_DIALOG == id){
			LayoutInflater inflater=LayoutInflater.from(this);		
			return new AlertDialog.Builder(this)
					.setView(inflater.inflate( R.layout.dialog, null) )
					.setTitle("tille")
					.setIcon(android.R.drawable.ic_dialog_alert)
					.setMessage("thisis message")
					.setPositiveButton("OK", null)
					.setNegativeButton("Cancle", null)
					.create();
		}
                   //进度条类型Dialog
               else if(PROGRESS_DIALOG==id){
			ProgressDialog dialog=new ProgressDialog(this);
			dialog.setTitle("title");
			dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //进度条类型(长条型,圆圈型等)
			dialog.setMax(100);  
			dialog.incrementProgressBy(20);  //自定了当前进度(一般要通过具体业务实现)
			return dialog;
		}
		return super.onCreateDialog(id);
		
	}
	
}

        二.创建一个Dialog再进行调用

      在values文件夹下的styles文件中配置

 <style name="MyDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item> //设置Dialog无标题
        <item name="android:windowBackground">@color/blue</item>   //设置背景
        <item name="android:windowIsFloating">true</item>  //设置Dialog悬浮
        <item name="android:windowContentOverlay">@null</item>
    </style>

      创建自定义Dialog类

public class FriendsMsgDialog extends Dialog {
    Context context;
    int position;
    MyApplication application;
    ImageView icon;
    TextView nickname;
    TextView address;
    TextView sex;
    TextView phone;
    JSONArray array;
    LayoutInflater inflater;
       //重载构造函数
	public FriendsMsgDialog(Context context, int theme,int position,JSONArray array) {
		super(context, theme);
		this.context=context;
		this.position=position;
		this.array=array;
		application=(MyApplication) context.getApplicationContext();
		inflater=LayoutInflater.from(context);
	}

      //要实现onCreate(Bundle savedInstanceState) 方法
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		View view=inflater.inflate(R.layout.friends_msg,null);
		
		JSONObject obj;
		try {
		obj = (JSONObject) array.get(position);
               //获取自定义Dialog界面上的各个组件		
		icon=(ImageView) view.findViewById(R.id.img_dtlfriends_icon);
		nickname=(TextView) view.findViewById(R.id.tv_dtlfriends_nickname);
		address=(TextView) view.findViewById(R.id.tv_dtlfriends_address);
		sex=(TextView) view.findViewById(R.id.tv_dtlfriends_sex);
		phone=(TextView) view.findViewById(R.id.tv_dtlfriends_phone);
		//给各组件赋值(通过具体业务)
	    nickname.setText(obj.getString("nick_name"));
	    address.setText(obj.getString("address"));
	    sex.setText(obj.getString("sex"));
	    phone.setText(obj.getString("phone"));
	    GetIcon.getview(obj.getString("icon"), icon);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		setContentView(view);
	}
}

       调用Diaog

public boolean onItemLongClick(AdapterView<?> parent, View view,
	        int position, long id) {  //长按listView的某一项显示Dialog
		if(dialog==null){
		   dialog=new FriendsMsgDialog(context, R.style.MyDialog,position,array);
		   dialog.show();
		}else
		   dialog.show();
		return true;

 系统消息通知

    

NotificationManager nm;
findViewById(R.id.button6).setOnClickListener(new Button.OnClickListener(){

			@Override
			public void onClick(View arg0) {
				installNotificaiton();
			}
		});

	private void installNotificaiton()
	{
		//获取系统 通知服务
		nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
		
		//创建一个通知 
		Notification nf=new Notification();
		
		//设置状态text
		nf.tickerText="new messages incoming...";
		//设置时间
		nf.when=System.currentTimeMillis();
		//设置icon
		nf.icon=R.drawable.ic_launcher;
		
		//设置特性
		nf.flags=nf.FLAG_AUTO_CANCEL ;
		
                //点击消息跳转到MainActivity
		PendingIntent pi=PendingIntent.getActivity(this, 0,  new Intent(this, MainActivity.class ),PendingIntent.FLAG_CANCEL_CURRENT);
               
		nf.setLatestEventInfo(this, "title", "somebody send you msg", pi);
		nm.notify(2014, nf);		
	}

 

 

分享到:
评论

相关推荐

    轻量万能自定义信息管理系统软件 v7.1.028

    轻量万能自定义信息管理系统软件是为了解决所有企业团队或个体商户所面临的业务管理难,市场上找不到一款适合自己需要的,同时操作起来与Execl表格又相差不大的信息管理软件。具资料查询管理、小微计算、统计汇总,...

    自定义消息 MFC 对话框

    在MFC中,自定义消息通常用作类之间的通信方式,以扩展系统内置的消息处理能力。自定义消息不同于标准的Windows消息,它们不在消息映射表中定义,而是通过`RegisterWindowMessage`函数动态注册生成。 二、创建...

    Notification消息通知 自定义消息通知内容布局

    Notification消息通知可以分为两种类型:系统通知和应用程序通知。系统通知是由系统自己生成的通知,例如低电量警告、网络连接错误等,而应用程序通知是由应用程序自己生成的通知,例如新消息提醒、更新提醒等。 ...

    ios自定义弹出本地通知

    在iOS平台上,本地通知是一种非常重要的用户交互方式,它能够在应用程序不在前台运行或者用户未直接与应用交互时向用户发送消息。"ios自定义弹出本地通知"这一主题主要涉及如何在iOS应用中创建和定制本地通知,以...

    Netty4编写服务器客户端,自定义编解码,发送自定义消息

    在这个项目中,我们将深入理解如何利用 Netty 4 来编写服务器和客户端,实现自定义的消息编解码,并进行通信。 首先,我们要创建一个自定义的消息类。这个消息类通常会包含必要的字段,比如消息头、消息体等,以...

    ros+rviz+自定义消息+自定义插件

    测试通常会验证插件是否能正确加载、显示数据以及与ROS系统其他部分的交互。 总结一下,这个项目涉及了ROS的自定义消息创建,以及在RViz中开发Panel和Display类型的自定义插件。通过这些技术,我们可以构建高度定制...

    自定义消息,VC里面 自定义消息的实现,已经运行调式成功

    在Windows编程中,自定义消息(Custom Message)是一种扩展系统消息机制的方法,允许开发者定义自己的消息类型,以处理特定的应用程序需求。在Visual C++(VC++)环境中,自定义消息的实现通常涉及到Windows消息队列...

    MFC 自定义消息实现

    自定义消息在MFC中通常通过`WM_USER`开始的数值来定义,这是Windows消息ID预留的范围,以避免与系统内置的消息ID冲突。创建自定义消息通常包含以下几个步骤: 1. **定义消息ID**:首先,你需要定义一个消息ID。这...

    实现自定义的弹出通知视图(Notification)-定制颜色、图标等

    例如,`setStyle(NotificationCompat.BigPictureStyle style)`可以创建一个显示大图片的通知,而`setStyle(NotificationCompat.InboxStyle style)`则可以创建一个显示多行文本消息的通知。 除了视觉元素,通知的...

    NotificationDemoWPF自定义通知窗体样式

    【标题】"NotificationDemoWPF自定义通知窗体样式"主要涉及的是在Windows Presentation Foundation (WPF) 平台上创建自定义的通知窗口。WPF是.NET Framework的一部分,它提供了丰富的用户界面设计工具和功能,允许...

    Android仿QQ消息通知栏新消息实时更新效果

    在Android应用开发中,实现类似QQ的消息通知栏新消息实时更新效果是一项常见的需求。这个功能不仅能够让用户在不打开应用的情况下获取到新消息,还能提供便捷的交互方式,如一键清除所有新消息。下面我们将详细探讨...

    MFC 自定义消息和自定义类

    自定义消息是Windows消息系统的一部分,允许程序员定义自己的消息类型,而自定义类则提供了创建具有独特行为的对象的能力。下面我们将详细探讨这两个概念及其在实际开发中的应用。 首先,我们来看自定义消息。在MFC...

    VC中实现自定义消息(源码+文档说明)

    自定义消息是扩展Windows消息系统的一种方式,它允许程序员在应用程序内部或者不同组件之间传递特定的信息。 首先,自定义消息的创建通常通过`RegisterWindowMessage`函数来完成。这个函数会返回一个唯一的消息ID,...

    Android快速集成极光推送,内含自定义通知,通知推送对象到某一个人,或者某一群人

    本文将详细介绍如何快速集成极光推送到Android项目中,并实现自定义通知,以及如何将通知推送给特定的个人或群体。 一、集成极光推送 1. 注册极光推送账号:首先,你需要在极光推送官网(http://www.jpush.cn/)...

    java socket通信自定义消息协议

    本篇将详细讲解如何在Java中实现基于Socket的自定义消息协议,以及客户端与服务器端的数据转换与解析过程。 首先,我们来看`SocketClient.java`,这是客户端的代码实现。客户端通常需要以下几个步骤: 1. 创建...

    环信发送消息----名片(自定义视图消息)

    综上所述,集成环信发送好友名片及自定义视图消息涉及到环信SDK的使用、自定义UI设计、消息构建与发送、消息监听以及用户交互等多个方面。通过熟练掌握这些知识点,开发者可以构建出具有高效沟通和分享功能的应用,...

    自定义Win7任务栏通知区域.docx

    对于小白来说,他发现自己的应用程序图标被隐藏,这意味着他错过了好友的消息通知,因为没有头像闪烁的提示。为了避免这种情况,用户可以通过自定义设置来改变通知区域的图标显示状态。 要自定义任务栏通知区域,...

    CBC的消息响应_系统响应,自定义消息响应

    在IT领域,特别是软件开发中,消息响应是操作系统与应用程序之间通信的重要机制。本文将深入探讨标题中的"CBC的消息响应_系统响应,自定义消息响应"这一主题,特别是在C++Builder 6.0环境下如何实现。 C++Builder是...

    vc自定义消息实例

    自定义消息是在Windows消息系统中,程序员为应用程序定义的非标准消息类型。它们不包含在Windows SDK的标准消息列表中,而是由应用程序自己定义并分配消息ID。这使得开发者能够添加超出Windows默认消息机制的额外...

Global site tag (gtag.js) - Google Analytics