`

自定义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);		
	}

 

 

分享到:
评论

相关推荐

    系统通知和自定义的通知

    系统通知是Android提供的原生功能,而自定义通知则是开发者为了提供更加丰富和个性化的用户体验而进行的扩展。下面我们将详细探讨“系统通知”和“自定义的通知”。 首先,系统通知是Android API提供的一种服务,...

    自定义工作流系统的设计与实现

    自定义工作流系统的设计与实现是一项复杂而重要的任务,它涉及到企业的日常运营效率和业务流程优化。本文档将深入探讨如何构建一个高效、灵活且用户友好的自定义工作流系统。 首先,我们需要理解工作流的基本概念。...

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

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

    自定义消息 MFC 对话框

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

    MFC自定义消息示例

    自定义消息是Windows消息机制的一部分,允许开发者扩展系统消息,以满足特定应用需求。本教程将详细介绍如何在MFC环境下创建和处理自定义消息。 一、自定义消息的概念 自定义消息是Windows操作系统中除标准消息(如...

    自定义消息机制

    为了扩展这种能力,我们可以自定义消息机制,实现更灵活的消息传递。 自定义消息机制的核心思想是创建一个类来封装消息的发送、接收和处理过程,而不是依赖于Windows的消息循环。以下是一些关键步骤和知识点: 1. ...

    ios自定义弹出本地通知

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

    VC发送自定义消息

    本篇将详细介绍如何在VC++与MFC中发送和处理自定义消息,以及提供的UserMessageDemo示例。 自定义消息的概念: 在Windows API中,消息是进程间通信(IPC)的一种方式,由一个线程发送给另一个线程。系统定义了一...

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

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

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

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

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

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

    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的一部分,它提供了丰富的用户界面设计工具和功能,允许...

    VC 消息映射与处理\创建和使用自定义消息

    在Microsoft Visual C++ (VC++) 中,消息映射与处理是Windows编程中的核心概念,用于管理应用程序中的用户界面事件和系统消息。这篇文章将深入探讨如何在VC++中创建和使用自定义消息,以便扩展和定制应用程序的行为...

    超强自定义问卷调查系统5.8

    超强自定义问卷调查系统是少有的采用纯静态实现的问卷调查系统,其性能和可定义性从技术本身就决定了其优势。 超强自定义问卷调查系统由佰思科技(Bicesoft.com)独立开发,根据第三方统计记录,截至2011年11月...

    VC6自定义消息WM_USER

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

    JPush:极光推送:接收自定义消息,动态控制通知栏是否提醒,消息总列表更新消息,消息详情界面自动更新消息详情

    极光推送支持发送自定义消息,这意味着开发者可以自由设计消息内容,传递除系统默认字段外的额外数据。在客户端,你需要设置消息接收回调,监听接收到的自定义消息。这通常通过继承`JPUSHInterface`中的`...

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

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

    android系统通知栏提示消息

    在Android操作系统中,系统通知栏是用户获取应用更新、消息提醒和系统状态的重要途径。当一个应用程序有新的消息或事件需要告知用户时,它会通过发送通知到Android的通知中心来实现这一功能。通知通常包括标题、内容...

Global site tag (gtag.js) - Google Analytics