`

自定义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自定义控件之上下轮播通知消息

    本文将深入探讨如何实现一个类似于京东快报的上下轮播通知消息的自定义控件。这个控件能够每3秒自动滚动显示一条新的通知消息,为用户提供动态、及时的信息展示。 首先,我们需要创建一个新的Java类,继承自`View`...

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

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

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

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

    自定义消息 MFC 对话框

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

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

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

    ios自定义弹出本地通知

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

    VC发送自定义消息

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

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

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

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

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

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

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

    Android自定义通知栏Notification

    Notification是系统级的消息提示,它可以在用户不直接与应用交互时提供信息,比如在状态栏显示消息、更新或者提醒。本项目“Android自定义通知栏Notification”旨在实现一个功能丰富的通知栏组件,其主要涉及以下...

    NotificationDemoWPF自定义通知窗体样式

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

    C# Wninform自定义消息窗

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

    MFC线程自定义消息循环

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

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

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

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

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

    android系统通知栏提示消息

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

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

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

    vc自定义消息实例

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

Global site tag (gtag.js) - Google Analytics