`

自定义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类型的自定义插件。通过这些技术,我们可以构建高度定制...

    MFC 自定义消息实现

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

    DLL导出自定义消息通知exe执行

    这里`WM_USER_DEFINED_MESSAGE`是我们自定义的消息ID,它必须在`WM_USER`和`WM_USER+1000`之间,以避免与系统消息冲突。 接下来,在DLL中实现一个函数,用于发送自定义消息到目标EXE。例如: ```cpp extern "C" __...

    NotificationDemoWPF自定义通知窗体样式

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

    C# Wninform自定义消息窗

    本话题将深入探讨如何在C# Winform应用中实现自定义消息窗,以及如何在系统默认和自定义之间进行选择。 首先,系统默认的消息提示框,如`MessageBox.Show()`,是.NET Framework提供的一个便捷方法,用于快速显示...

    VC6自定义消息WM_USER

    在Windows编程中,自定义消息(Custom Message)是一种允许开发者扩展系统消息机制的方式。当标准的消息(如WM_PAINT、WM_MOUSEMOVE等)无法满足特定需求时,开发者可以通过注册并发送自定义消息来实现特定功能。...

    MFC线程自定义消息循环

    6. **结束线程**:当线程完成其任务时,应调用`ExitInstance`方法来通知操作系统线程已结束。线程的`m_nThreadID`属性可以用来识别线程,以便在其他线程中等待该线程结束。 通过以上步骤,你就可以在MFC中为线程...

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

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

    MFC 自定义消息和自定义类

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

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

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

    java socket通信自定义消息协议

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

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

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

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

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

    VC一个自定义消息的实例:从一个对话框向另一个对话框发送消息

    例如,可以使用`RegisterWindowMessage`函数动态注册一个消息,或者直接定义一个常量,如`WM_MY_CUSTOM_MSG = WM_USER + 1000`,确保它不与系统消息冲突。 2. **发送消息**:在发送方,使用`SendMessage`函数发送...

Global site tag (gtag.js) - Google Analytics