当前位置:  编程技术>移动开发
本页文章导读:
    ▪PhoneGap技术引见        PhoneGap技术介绍 PhoneGap  开发语言: HTML, CSS, JavaScript开发工具: PhoneGap Development Tools, Development Code链接: http://phonegap.com/ 优点:开源、跨平台 PhoneGap是一个开源项目,并且是跨平台的.........
    ▪ 【selenium】selenium-ide装配及验证        【selenium】selenium-ide安装及验证 selenium安装前提 1、安装Firefox浏览器2、到官网​http://seleniumhq.org/download/ 下载selenium-ide-1.6.0.xpi selenium-ide安装 1、下载完成后拖动文件到打开的Firefox窗口,.........
    ▪ 雷电战机-附源码       雷电战机---附源码自己无聊写着玩的,没有注意代码架构和规范阿,大家就当娱乐一下,挺好玩的!我玩了一下午.... package com.example.phonegaptest; import java.util.ArrayList; import java.util.Iterator; impor.........

[1]PhoneGap技术引见
    来源: 互联网  发布时间: 2014-02-18
PhoneGap技术介绍

PhoneGap 

  • 开发语言: HTML, CSS, JavaScript
  • 开发工具: PhoneGap Development Tools, Development Code
  • 链接: http://phonegap.com/ 
  • 优点:开源、跨平台

PhoneGap是一个开源项目,并且是跨平台的。有了它,JavaScript工程师能够轻松地利用网页技术(HTML/CSS/JavaScript)来开发手机应用(包括安卓和苹果的)。PhoneGap号称是“唯一开源的手机框架,并且支持7个平台”! 它支持的平台有Android, iOS, Windows Phone7, Web OS, Symbian, 和BADA。
phonegap 简单来说是一个中间件,为移动前端提供访问移动终端设备及资源的接口。采用统一的标准的html、javascript、css等web技术开发。通过不同平台的浏览器访问来实现跨平台。通过javascript脚步代码调用系统资源,以降低开发难度,所以受到广大web开发人员的青睐。
开发一个具有相同业务的应用Natural-Application需要使用到不同平台的框架和开发语言。使用 C/C++ 的 Symbian、使用 Object C 的 iOS 和使用 Java 的 Android 应用开发技术,几乎是完全无法融合的。 PhoneGap跨平台移动应用开发框架正是应运而生。
   
我们需要搞清楚几个概念:Web App,Native App,Hybird App移动平台Application几个概念:   

Web App 这个主要是采用统一的标准的HTML,JavaScript。CSS等web技术开发。通过不同平台的浏览器访问来实现跨平台。同时可以通过浏览器支持充分使用HTML5特性,缺点是这些基于浏览器的应用无法调用系统API来实现一些高级功能,也不适合高性能要求的场合。   
Native APP 就是所谓的原生应用。指的是用平台特定的开发语言所开发的应用。使用它们的优点是可以完全利用系统的API和平台特性,在性能上也是最好的。缺点是由于开发技术不同,如果你要覆盖多个平台,则要针对每个平台独立开发,无跨平台特性。 
Hybird App 则是为了弥补如上两者开发模式的缺陷的产物。分别继承双方的优势。首先它让为数众多的web开发人员可以几乎零成本的转型成移动应用开发者;其次,相同的代码只需针对不同平台进行编译就能实现在多平台的分发,大大提高了多平台开发的效率;而相较于web App,开发者可以通过包装好的接口,调用大部分常用的系统API。   
而PhoneGap正是Hybird APP目前框架中集大成者

phonegap优缺点评估  
日前,phonegap框架热度如火如荼。一项技术当然会有其优缺点,我们是选用phonegap还是选择Native APP,要先分析两者的利弊,再根据具体应用选择,  
1 phonegap优点:  
1.1、可跨平台。它的原理如下:PhoneGap通过调用JavaSCript调用API库实现和各个平台的SDK进行无差别的交互。 以达到调用不同平台手机上摄像头,文件系统,重力感应。GPS定位等功能。  
1.2 易用性。
1.3 提供硬件访问控制。比起传统的Web程序,PhoneGap提供了一些列的JS 的类,可以直接访问硬件。比如加速,相机,指南针,GPS,文件访问等,可以让你用JS方便地调用系统的硬件。以弥补传统Web程序的一块错误。  
1.4 可利用成熟javascript框架。web的发展,诞生了许多javascript框架。著名的有Ext js、jQuery。随着移动应用的需求越来越大,jQuery出现了jQuery mobile版本。它的体积小,为移动应用量身定制。使用javascript框架也降低了开发难度,使得移动应用更美观。  
1.5 方便的安装和使用。PhoneGap,只用很简单的配置就可以搭好环境。只用专注写好自己的Web页面,拷贝进去就可以了。
2 phonegap不足之处  
2.1 运行速度慢。PhoneGap集成多了个平台。程序的载入和UI界面的反应都比原生的程序慢,UI反应延时——这是个致命伤 。它实际上还是在展示Web页面,所以载入、页面刷新等肯定是需要一定时间的。这在用户体验上来说PhoneGAp依然无法替代原生应用程序。另外,html、javascript、css都运行在各平台内置浏览器webkit之上,受到webkit处理速度影响。目前来说运行速度比较慢,性能较差。  
2.2 不适合部分程序。如果你的程序需要3D功能,或者对界面刷新有较高的要求,比如类似于游戏的程序现在来说还只是用原生的语言会比较好。
2.3 调用平台资源差。phonegap应用程序对平台资源的使用依赖于phonegap框架本身,由于phonegap是第三方框架,做不到100%调用平台资源。比如说,现在版本未能支持视频解码与播放等 
2.4 内存消耗大。有测试表明,用phonegap于android java开发同一个应用。运行phonegap应用内存消耗远大于原生态android java应用。对于频繁操作,释放内存较慢,从而导致内存消耗量飙升。  
2.5 调试难度大。目前phonegap可以在控制台输出简单的JS调试日志,但是并不方便。调试js只能选择firefox firebug调试。  

结语
phonegap的目标就是快速开发移动应用实现written once, run everywhere跨平台。phonegap一定程度上降低了移动开发的门槛,特别是ios开发。类似于phonegap这样的框架的出现,并不能取代Native APP原生态应用。phonegap有它的不足之处,运行速度较慢、操作平台资源不灵活、操作移动设备不方便,这些都依赖着phonegap框架本身的升级与发展。

    
[2] 【selenium】selenium-ide装配及验证
    来源: 互联网  发布时间: 2014-02-18
【selenium】selenium-ide安装及验证
selenium安装前提
  • 1、安装Firefox浏览器
  • 2、到官网​http://seleniumhq.org/download/

下载selenium-ide-1.6.0.xpi

selenium-ide安装
  • 1、下载完成后拖动文件到打开的Firefox窗口,有如下提示

  • 2、等待五秒钟后,安装按钮可用,点击安装,安装完成后会提示重启,重新启动浏览器
  • 3、重启完成后,可在菜单栏:工具--> 中看到Selenium IDE 菜单项,安装完成
selenium安装
  • 1、下载selenium-java-2.16.1.zip
  • 2、解压缩至指定路径(E:\rwq个人项目\rwq个人项目软件下载安装\selenium-2.16.1),打开文件夹可看见selenium-java-2.16.1.jar
selenium-ide验证
  • 1、Firefox窗口,菜单栏:工具--> Selenium IDE 打开

  • 2、打开新的浏览器页面“​http://www.google.com.hk/”
  • 3、selenium IDE界面“Base URL”输入框输入“​http://www.google.com.hk/”,
  • 4、确定table标签页无数据,确定selenium IDE界面右上角红色按钮是按下状态
  • 5、回到浏览器输入“测试IDE”,点击搜索
  • 6、回到selenium IDE界面,点击selenium IDE界面右上角红色按钮,停止记录
  • 7、点击左上角“Play entire test suite”,可看见页面再重复之前操作

  • 8、选中“type”将“value”对应的“测试IDE”更改为“测试”。点击“Play entire test suite”则浏览器执行时检索词更改为“测试”
eclipse中的运行
  • 1、selenium IDE界面菜单栏中 文件-->Export Test Case As...--> JUnit 3(Remote Control),导出为java文件(test.java)
  • 2、开始 --> 运行 --> cmd --> java -jar D:\webworksoftware\selenium-2.16.1\selenium-server-standalone-2.16.1.jar

(即:selenium-server-standalone-2.16.1.jar文件所在目录)

  • 3、再eclipse新建测试项目,引入刚导出的test.java文件
  • 4、工程引用相关的库文件,添加jar包,以及JUnit

  • 5、在java文件上右键 Run As --> Junit Test
  • 6、当看到firefox自动启动,回放录制的脚本,单元测试运行成功,则环境安装成功

学习网址:​http://www.cnblogs.com/hyddd/tag/Selenium/


    
[3] 雷电战机-附源码
    来源: 互联网  发布时间: 2014-02-18
雷电战机---附源码

自己无聊写着玩的,没有注意代码架构和规范阿,大家就当娱乐一下,挺好玩的!我玩了一下午....

package com.example.phonegaptest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
	int planeX = 160;
	int planeY = 550;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 设置无标题
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		// 设置全屏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		setContentView(new MyView(this));
	}

	class MyView extends View {
		final int BACK_HEIGHT = 1700;
		private Bitmap back;
		private Bitmap plane;
		private Bitmap plane2;
		ArrayList<Point> bomb = new ArrayList<Point>();
		ArrayList<Point> foemanBomb = new ArrayList<Point>();
		int foemanBombTimes = 0;
		Point foeman = new Point();
		boolean foemanDied = true;
		boolean imDied = false;
		Random random = new Random();
		Matrix m = new Matrix();
		int count = 0;

		final int WIDTH = 320;
		final int HEIGHT = 600;
		private int startY = BACK_HEIGHT - HEIGHT;

		public MyView(Context context) {
			super(context);
			setFocusable(true);
			back = BitmapFactory.decodeResource(getResources(),
					R.drawable.back_img);
			plane = BitmapFactory.decodeResource(getResources(),
					R.drawable.plane);
			m.setRotate(180);
			plane2 = Bitmap.createBitmap(plane, 0, 0, plane.getWidth(),
					plane.getHeight(), m, true);

			final Handler handler = new Handler() {
				@Override
				public void handleMessage(Message msg) {
					super.handleMessage(msg);
					if (msg.what == 0x123) {
						startY -= 30;
						if (startY < 0) {
							startY = BACK_HEIGHT - HEIGHT;
						}
					}
					invalidate();
				}

			};

			new Timer().schedule(new TimerTask() {
				@Override
				public void run() {
					if (foemanDied) {
						int x = random.nextInt(320 - 34);
						int y = random.nextInt(600 - 90);
						foeman.x = x;
						foeman.y = y;
						foemanDied = false;
					}

					if (foemanBombTimes++ > 10) {
						foemanBombTimes = 0;
						Point point = new Point(foeman.x + 17, foeman.y
								+ plane2.getHeight());
						foemanBomb.add(point);
					}
					handler.sendEmptyMessage(0x123);
				}
			}, 0, 100);
		}

		@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			switch (keyCode) {
			case KeyEvent.KEYCODE_DPAD_LEFT:
				planeX -= 30;
				if (planeX < 0) {
					planeX = 0;
				}
				break;
			case KeyEvent.KEYCODE_DPAD_RIGHT:
				planeX += 30;
				if (planeX > WIDTH - 34) {
					planeX = WIDTH - 34;
				}
				break;
			case KeyEvent.KEYCODE_DPAD_DOWN:
				planeY += 30;
				if (planeY > HEIGHT - 45) {
					planeY = HEIGHT - 45;
				}
				break;
			case KeyEvent.KEYCODE_DPAD_UP:
				planeY -= 30;
				if (planeY < 0) {
					planeY = 0;
				}
				break;
			case KeyEvent.KEYCODE_DPAD_CENTER:
				if (!imDied) {
					Point point = new Point(planeX + 17, planeY);
					bomb.add(point);
				}
				break;
			case KeyEvent.KEYCODE_BACK:
				if (imDied) {
					count = 0;
					imDied = false;
					foeman.x = random.nextInt(320 - 34);
					foeman.y = random.nextInt(600 - 90);
				}
				break;
			}
			invalidate();
			return true;
		}

		@Override
		protected void onDraw(Canvas canvas) {
			super.onDraw(canvas);
			Bitmap bitmap2 = Bitmap
					.createBitmap(back, 0, startY, WIDTH, HEIGHT);
			canvas.drawBitmap(bitmap2, 0, 0, null);
			if (!imDied) {
				canvas.drawBitmap(plane, planeX, planeY, null);
			}
			Paint paint = new Paint();
			Paint paint2 = new Paint();
			paint.setColor(Color.RED);
			paint2.setColor(Color.WHITE);
			Iterator iterator = bomb.iterator();
			if (!foemanDied) {
				canvas.drawBitmap(plane2, foeman.x, foeman.y, null);

				Iterator iterator2 = foemanBomb.iterator();
				while (iterator2.hasNext()) {
					Point p = (Point) iterator2.next();
					p.y += 20;
					if (p.y > 595) {
						iterator2.remove();
					}
					canvas.drawCircle(p.x, p.y, 5, paint2);

					if (p.x > planeX && p.x < planeX + 34 && p.y > planeY
							&& p.y < planeY + 45) {
						imDied = true;
					}
				}
			}
			while (iterator.hasNext()) {
				Point p = (Point) iterator.next();
				p.y -= 10;
				if (p.y < 0) {
					iterator.remove();
				}
				canvas.drawCircle(p.x, p.y, 5, paint);

				if (p.x > foeman.x && p.x < foeman.x + 34 && p.y > foeman.y
						&& p.y < foeman.y + 45) {
					foemanDied = true;
					canvas.drawText("nice", foeman.x, foeman.y, paint);
					count++;
				}
			}

			canvas.drawText("Your score:" + count, 5, 10, paint);
			if (imDied) {
				canvas.drawText("Game is over! Press the back key.", planeX,
						planeY, paint2);
			}
		}

	}
}


源码:http://download.csdn.net/detail/h3c4lenovo/4565429



    
最新技术文章:
▪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的屏幕截...
HTML标签参考手册 iis7站长之家
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

©2012-2021,