当前位置:  编程技术>移动开发
本页文章导读:
    ▪统制对话框的关闭        控制对话框的关闭对话框的任何一个按钮,只要点击,默认状态下均会关闭对话框。对话框的关闭是由AlertDialog.mShowing这个变量控制的,只要在单击按钮的过程中修改这个变量的值就可以了。.........
    ▪ Apple有多大        Apple有多大?苹果用技术改变了整个世界。苹果的产品iPhone和iPad改变了人们对数字设备的看法。苹果已经成为世界上最大的公司。2011年,苹果公司市值5080亿美元。苹果产品的销售额达到了128.........
    ▪ 开发中碰到的关于时间的处理:设置时间范围大于当前时间小于某一天       开发中遇到的关于时间的处理:设置时间范围大于当前时间小于某一天需求:在做类似于微博的android客户端的时候,要求有个定时发微薄功能,时间设置要求:初始化时间大于当前时间两分.........

[1]统制对话框的关闭
    来源: 互联网  发布时间: 2014-02-18
控制对话框的关闭

对话框的任何一个按钮,只要点击,默认状态下均会关闭对话框。对话框的关闭是由AlertDialog.mShowing这个变量控制的,只要在单击按钮的过程中修改这个变量的值就可以了。

try{

Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");

field.setAccessible(true);

//将mShowing变量设置 为false,好让系统认为这个dialog已经关闭

field.set(dialog,false);

}catch (Exception e){}


改变对话框的透明度

WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();
                lp.alpha=1.0f;
                dialog.getWindow().setAttributes(lp);
alpha在0.0f到1.0f之间。1.0完全不透明,0.0f完全透明
设置黑暗度
dialog.setContentView(R.layout.dialog);
                WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();
                lp.dimAmount=1.0f;
                dialog.getWindow().setAttributes(lp);
                dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dimAmount在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗
还有个FLAG用途设置背景模糊,dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

改变对话框的位置

  • Window window = alertDialog.getWindow();     
  • window.setGravity(Gravity.TOP);   //window.setGravity(Gravity.BOTTOM);   




  •     
    [2] Apple有多大
        来源: 互联网  发布时间: 2014-02-18
    Apple有多大?
    苹果用技术改变了整个世界。苹果的产品iPhone和iPad改变了人们对数字设备的看法。

    苹果已经成为世界上最大的公司。2011年,苹果公司市值5080亿美元。苹果产品的销售额达到了1280亿。苹果还在日益增长。请看下图:



        
    [3] 开发中碰到的关于时间的处理:设置时间范围大于当前时间小于某一天
        来源: 互联网  发布时间: 2014-02-18
    开发中遇到的关于时间的处理:设置时间范围大于当前时间小于某一天

    需求:在做类似于微博的android客户端的时候,要求有个定时发微薄功能,时间设置要求:初始化时间大于当前时间两分钟,设置时间不能超过十五天。

    解决过程:在网上找了一部分参考资料,发现都不能很好的解决问题,查看了时间的API也没有真正明白用法,据听说java中最让人费解的就是时间处理这块。后来在一个同事的帮助下,找到了思路。

    首先:创建一个类继承 OnDateChangedListener OnTimeChangedListener

    在代码中初始化时间和日期控件,这里用的是DatePicker和TimePicker

    		Calendar c = Calendar.getInstance();
    		sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		sdf.setTimeZone(TimeZone.getTimeZone("GMT+08:00")); // 加上这行代码就哦了
    		oldTimeString = sdf.format(c.getTime());
    		//如果不初始化则不会对dataPicker进行监听
    		datePicker.init(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), this);
    		//设置时间大于当前时间两分钟
    		timePicker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
    		timePicker.setCurrentMinute(c.get(Calendar.MINUTE) + 2);
    		onDateChanged(null, 0, 0, 0); //通知修改时间为初始化的时间

    这样处理就可以实现初始化时间大于当前时间两分钟,而且实现的是24小时制的模式。

    然后就是自己在页面里进行时间的设置,通过监听来实现时时的显示时间信息:

    	@Override
    	public void onDateChanged(DatePicker view, int year, int monthOfYear,
    			int dayOfMonth) {
    		System.out.println("你点击了月份");
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(datePicker.getYear(), datePicker.getMonth(),
    				datePicker.getDayOfMonth(), timePicker.getCurrentHour(),
    				timePicker.getCurrentMinute());
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		sdf.setTimeZone(TimeZone.getTimeZone("GMT+08:00")); 
    		setTimeString = sdf.format(calendar.getTime());
    		
    		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    		sdf2.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
    		textView.setText( sdf2.format(calendar.getTime()) );
    		
    	}
    
    	@Override
    	public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    		onDateChanged(null, 0, 0, 0);
    		
    	}

    在点击确定的时候,对设置的时间进行最后的判断,主要是判断时间是否大于15天的问题。

    				DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    				Calendar c1 = Calendar.getInstance();
    				Calendar c2 = Calendar.getInstance();
    				
    				try {
    					/**
    					 * 提前两分钟
    					 */
    					setTimeDate = df.parse(setTimeString);
    					c1.setTime(setTimeDate);
    					c1.add(Calendar.MINUTE, 2);
    					setTimeDate = c1.getTime();
    					Date d2 = df.parse(oldTimeString);
    					
    					/**
    					 * 提前15天零两分钟
    					 */
    					c2.setTime(d2);
    					c2.add(Calendar.DAY_OF_MONTH, 15);
    					c2.add(Calendar.MINUTE, 2);
    					Date oldTimeDate = c2.getTime();
    					/**
    					 * setTimeDate设置时间 
    					 * oldTimeDate当前时间 + 十五天零两分钟
    					 * oldTimeDate - setTimeDate   > 0 说明设置时间小于十五天
    					 *         = 0 说明设置时间等于15天
    					 *         < 0 说明设置时间大于15天
    					 */
    					diff = oldTimeDate.getTime() - setTimeDate.getTime()  ;
    					
    					
    				} catch (Exception e) {
    					System.out.println("e=" + e);
    				}

    这种加减时间的方式才是正确的,现实的时候不会出现时间错乱的问题。

    通过对diff的比较大小就可以达到了时间不能超过十五天的目的。

    				/**
    				 * diff属于毫秒的差值   如果小于零说明设置时间大于15天 自动把时间调整到第十五天
    				 * 				       如果大于大于15 * 1000 * 24 * 60 * 60 + 2 * 60 * 1000 说明设置时间小于当前时间 则自动把时间设置到当前时间
    				 * 这里又考虑到有两分钟的差值   
    				 */
    				if (diff > 0) {
    					if (diff <= (15 * 1000 * 24 * 60 * 60 + 2 * 60 * 1000)) {
    						Intent intent = new Intent(SetTimes.this, SendMicoBlog.class);
    						Bundle bundle = new Bundle();
    						/*
    						 * new一个Bundle对象,并将要传递的数据传入
    						 */
    						bundle.putInt("hour", timePicker.getCurrentHour());
    						bundle.putInt("minute", timePicker.getCurrentMinute());
    						bundle.putInt("year", datePicker.getYear());
    						bundle.putInt("month", datePicker.getMonth() + 1);
    						bundle.putInt("date", datePicker.getDayOfMonth());
    						bundle.putLong("diff", setTimeDate.getTime());
    						System.out.println(datePicker.getMonth() + "month");
    						intent.putExtras(bundle);
    						setResult(3, intent);
    						SetTimes.this.finish();
    					} else {
    						
    						Calendar c3 = Calendar.getInstance();
    						datePicker.init(c3.get(Calendar.YEAR), c3.get(Calendar.MONTH), c3.get(Calendar.DAY_OF_MONTH), SetTimes.this);
    						timePicker.setCurrentHour(c3.get(Calendar.HOUR_OF_DAY));
    						timePicker.setCurrentMinute(c3.get(Calendar.MINUTE) + 2);
    						Toast.makeText(SetTimes.this, "设置时间应该大于零", Toast.LENGTH_SHORT).show();
    					}
    				} else {
    					datePicker.init(c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH), SetTimes.this);
    					timePicker.setCurrentHour(c2.get(Calendar.HOUR_OF_DAY));
    					timePicker.setCurrentMinute(c2.get(Calendar.MINUTE) - 3);
    					Toast.makeText(SetTimes.this, "设置时间应该小于等于15天", Toast.LENGTH_SHORT).show();
    				}
    				onDateChanged(null, 0, 0, 0);

    在时间不满足的情况下,做了两个处理,第一:如果小于当前时间则把时间调整到当前时间加两分钟;第二:如果设置时间大于15天,则把时间调整到第十五天的时间。最终问题最终得到解决






        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3