当前位置:  编程技术>移动开发
本页文章导读:
    ▪DatePicker与TimePicker动态输入时间跟日期        DatePicker与TimePicker动态输入时间和日期 一、DatePicker与TimePicker动态输入时间和日期 private int mYear; private int mMonth; private int mDay; private int mHour; private int mMinute; TextView tv; TimePicker tp; DatePicke.........
    ▪ PhoneGap学习札记(1)        PhoneGap学习笔记(1) PhoneGap 提供有2个重要的组件:     1. 将本地功能暴露到JavaScript的层面,用户可以通过JavaScript编程调用     2. 对于特定平台的本地代码,可以通过PhoneGap 的 JavaScript API .........
    ▪ 灵便使用精灵可视区域(TextureRect)与锚点(anchorPoint)       灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint)        今天Himi单用一篇博文来给童鞋们介绍精灵相关的两个常用的细节知识点;       首先来介绍第一个知识点:精灵可视区域;      .........

[1]DatePicker与TimePicker动态输入时间跟日期
    来源: 互联网  发布时间: 2014-02-18
DatePicker与TimePicker动态输入时间和日期

一、DatePicker与TimePicker动态输入时间和日期

private int mYear;
	private int mMonth;
	private int mDay;
	private int mHour;
	private int mMinute;
	
	TextView tv;
	TimePicker tp;
	DatePicker dp;

	public void onCreate(Bundle savedInstanceState) {
		
		Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		mHour = c.get(Calendar.HOUR_OF_DAY);
		mMinute = c.get(Calendar.MINUTE);
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.picker);
		
		tv = (TextView) findViewById(R.id.showTime);
		updateDisplay();
		
		dp = (DatePicker) findViewById(R.id.dPicker);
		dp.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() {
			public void onDateChanged(DatePicker view, int year,
					int monthOfYear, int dayOfMonth) {
				mYear = year;
				mMonth = monthOfYear;
				mDay = dayOfMonth; /* 调用updateDisplay()来改变显示日期 */
				updateDisplay();
			}
		});
		
		tp = (TimePicker) findViewById(R.id.tPicker);
		tp.setIs24HourView(true);
		tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
			public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
				mHour = hourOfDay;
				mMinute = minute; /* 调用updateDisplay()来改变显示时间 */
				updateDisplay();
			}
		});
	}

	private void updateDisplay() {
		tv.setText(new StringBuilder().append(mYear).append("/")
				.append(format(mMonth + 1)).append("/").append(format(mDay))
				.append(" ").append(format(mHour)).append(":")
				.append(format(mMinute)));
	}

	private String format(int x) {
		String s = "" + x;
		if (s.length() == 1)
			s = "0" + s;
		return s;
	}
 


二、弹出窗口输入日期和时间

private int mYear;
	private int mMonth;
	private int mDay;
	private int mHour;
	private int mMinute;

	private TextView tv;
	private Button button1;
	private Button button2;

	public void onCreate(Bundle savedInstanceState) {

		Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		mHour = c.get(Calendar.HOUR_OF_DAY);
		mMinute = c.get(Calendar.MINUTE);

		super.onCreate(savedInstanceState);
		setContentView(R.layout.picker2);

		tv = (TextView) findViewById(R.id.textView1);
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		updateDisplay();

		button1.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				new DatePickerDialog(Picker2.this,
						new DatePickerDialog.OnDateSetListener() {

							public void onDateSet(DatePicker view, int year,
									int monthOfYear, int dayOfMonth) {
								mYear = year;
								mMonth = monthOfYear;
								mDay = dayOfMonth;
								updateDisplay();
							}
						}, mYear, mMonth, mDay).show();
			}

		});

		button2.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				new TimePickerDialog(Picker2.this,
						new TimePickerDialog.OnTimeSetListener() {
							public void onTimeSet(TimePicker view,
									int hourOfDay, int minute) {
								mHour = hourOfDay;
								mMinute = minute;
								updateDisplay();
							}
						}, mHour, mMinute, true).show();
			}

		});
	}

	private void updateDisplay() {
		tv.setText(new StringBuilder().append(mYear).append("/")
				.append(format(mMonth + 1)).append("/").append(format(mDay))
				.append(" ").append(format(mHour)).append(":")
				.append(format(mMinute)));
	}

	private String format(int x) {
		String s = "" + x;
		if (s.length() == 1)
			s = "0" + s;
		return s;
	}
 



 

 

    
[2] PhoneGap学习札记(1)
    来源: 互联网  发布时间: 2014-02-18
PhoneGap学习笔记(1)

PhoneGap 提供有2个重要的组件:

    1. 将本地功能暴露到JavaScript的层面,用户可以通过JavaScript编程调用

    2. 对于特定平台的本地代码,可以通过PhoneGap 的 JavaScript API 调用

 

它的核心库被设计为能够在绝大多数的设备上处理通用的任务:

    1. 能通过 PhoneGap JavaScript API 访问地理位置

    2. 能通过 PhoneGap JavaScript API 访问联系人信息

    3. 发起一次调用

 

它所不擅长:

    1. 处理大数据量

    2. 作为后台进程运行

    3. 实现复杂的业务逻辑

 

短处的解决办法:

    1. 实现一个自定义的用本地代码编写的组件

    2. 实现一个自定义的用JavaScript 编写的API ,并有自定义的本地组件绑定

    也就是实现PhoneGap的插件,扩展PhoneGap的框架

 

举例说明:

    现在需要编写一个跨iOS和Android平台的PhoneGap插件,那么我们需要做以下几件事:

    1. 编写一个运行在iOS和Android上的JavaScript文件

    2. 编写一个Android的java文件

    3. 编写一对iOS的.h和.m文件


    
[3] 灵便使用精灵可视区域(TextureRect)与锚点(anchorPoint)
    来源: 互联网  发布时间: 2014-02-18
灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint)

 

     今天Himi单用一篇博文来给童鞋们介绍精灵相关的两个常用的细节知识点;

      首先来介绍第一个知识点:精灵可视区域;

      不管在哪个移动平台上进行开发游戏都会接触使用到可视区域,比如Kjava(J2me)平台的setClip方法,Android的clipRect方法等等,那么在iOS上也一样存在,这里我们介绍cocos2d引擎中的可视区域得函数是setTextureRect;

      可能没有接触过游戏得童鞋不明白其概念,那么Himi就简单概述下:

      所谓可视区域就是在一个完整的表面上对其设置一定大小的区域,让其只显示设置的区域的面,其他部分隐藏不显示出来;最常用的是将一张图片设置一个可视区域,只让这张图展示设置的区域;

      那么这里在啰嗦几句,在cocos2d中精灵CCSprite的可视区域一般可以通过两种方式来设置:

1.在创建精灵的时候进行设置;2.在创建后进行设置;举例如下:

        新建一个cocos2d项目,然后在HelloWorldLayer.m中init方法中创建一个精灵,代码如下:

  • //---正常创建的icon图  
  • CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"];  
  • spriteOld.position=ccp(80,100);  
  • [self addChild:spriteOld];  
  • //---创建时设置30宽30高的可视区域  
  • CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png" rect:CGRectMake(0, 0, 30,30)];  
  • spriteNew.position=ccp(150,100);  
  • [self addChild:spriteNew];  
  • //---创建后对其设置30宽30高的可视区域  
  • CCSprite * spriteT =[CCSprite spriteWithFile:@"icon.png"];  
  • [spriteT setTextureRect:CGRectMake(10, 10, 30, 30)];  
  • spriteT.position=ccp(230,100);  
  • [self addChild:spriteT];   

  •      上面我创建了3个精灵,第一个没有设置可是区域的icon精灵,第二个和第三个是设置了可视区域宽30高30的精灵,但是第二个和第三个精灵的可是区域宽高相同,但是起始点不同;而且第二个是从创建精灵的时候设置可视区域,第三个精灵则是创建精灵后进行设置的,设置的地方不一样,功能是一样的;

     

        需要详细讲解的是不管用以上两种设置可视区域的哪种方法都需要传入一个CGRect对象,这个CGrect参数有四个,坐标x,y,以及宽高w,y;

        那么CGRect在可是区域的函数中的作用如下:

        CGRect的x,y表示从这个精灵贴图的(x,y)坐标开始设置可视区域,(w,h)可视区域的大小;    

         下面是运行效果图,童鞋们通过三个精灵(从左往右)之间的对比就很容易明白的:

     

     

     

          下面介绍第二个知识点:精灵锚点(anchorPoint);

            渲染锚点的作用就是在渲染图片的时候确定其渲染的方式,一般常用的锚点有以下几种:

          图片左上角、图片右上角、图片中心点、图片左下角、图片右下角等等

          首先童鞋们需要知道一点,在cocos2d引擎中在layer中添加渲染精灵贴图的时候默认的锚点是其中心点;

          那么由于cocos2d中layer的原点(0,0)点是屏幕的左下角,所以如果默认创建一个精灵添加到layer中的话,是精灵的中心点放置在layer的原点上,即精灵图片显示在屏幕中只是精灵的宽一半高一半,如下图:

     

     

                    对应代码如下:

  • //---使用默认锚点  
  • CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"];   
  • [self addChild:spriteOld];  

  •       那么如果我们设置其精灵的锚点为左下角则正好将精灵icon完整显示出来,因为精灵的左下角正好与layer的原点重合,如下图:

              对应代码如下:


    //---设置精灵锚点为左下角  

    CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png"];  


        
    最新技术文章:
    ▪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