android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)

 更新时间:2016年9月20日 20:01  点击:1719
文章分享了关于android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转) 应用,有需要的朋友可以参考一一本文章哈。

1.

 代码如下 复制代码
Webservice.GetVcardByUserNo(String userId,String userNo);

这个是封装了的webservice接口。
2.在程序中连续两次调用该接口时,ksoap2在解析第二次调用返回的结果时抛异常。
    异常信息如下:

 代码如下 复制代码
org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@4383bf38)

3.打断点调试时,不会出现该异常。

4.无奈之下使用android 的HttpURLConnection 直接调用webservice接口,直接使用时不会发生以上异常,所以使用ksoap2 访问webservice需要设置什么呢?

5.使用HttpUrlConnection访问webserivice代码如下:

(一)连接webservice

 代码如下 复制代码

String ServerUrl="webservice地址";
 String soapAction="http://www.111cn.net/PhoneClient/GetVcardJson";

 String data="";

String requestData="<?xml version="1.0" encoding="utf-8"?>rn"+
"<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">rn"
  +"<soap:Header>rn"+
    "<AuthHeader xmlns="http://www.111cn.net/PhoneClient/">rn"+
     "<UserId>"+userID+"</UserId>rn"+
    "</AuthHeader>rn"+
  "</soap:Header>rn"+
  "<soap:Body>rn"+
    "<GetVcardJson xmlns="http://www.111cn.net/PhoneClient/">rn"+
      "<vcardUserNo>"+userNo+"</vcardUserNo>rn"+
    "</GetVcardJson>rn"+
  "</soap:Body>rn"+

"</soap:Envelope>";

try{
URL url =new URL(ServerUrl);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
byte[] bytes=requestData.getBytes("utf-8");
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
con.setRequestProperty("SOAPAction",soapAction);
con.setRequestProperty("Content-Length",""+bytes.length);
OutputStream outStream=con.getOutputStream();
outStream.write(bytes);
outStream.flush();
outStream.close();
InputStream inStream=con.getInputStream();

data=parser(inStream);

(二)解析返回的数据

 代码如下 复制代码

private static String parser(InputStream in){
XmlPullParser parser=Xml.newPullParser();
String data="";
try{
int flag=0;
parser.setInput(in, "utf-8");
int evenType=parser.getEventType();
while(evenType!=XmlPullParser.END_DOCUMENT){
switch(evenType){
case XmlPullParser.START_DOCUMENT:break;
case XmlPullParser.START_TAG:
break;
case XmlPullParser.TEXT:
data=parser.getText();
break;
case XmlPullParser.END_TAG:break;
}
parser.next();
evenType=parser.getEventType();
}

}catch(XmlPullParserException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return data;
}

Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面。缺点是会受到网络信号的影响,从而导致访问速度慢。
1.用WebView来显示HTML代码
2.允许WebView执行JavaScript
    webView.getSettings().setJavaScriptEnabled(true);
3.获取到HTML文件,也可从网络中获取
   webView.loadUrl("file:///android_asset/index.html");   //HTML文件存放在assets文件夹中
4.添加一个对象, 让JS可以访问该对象的方法, 该对象中也可以调用JS中的方法
   webView.addJavascriptInterface(new Contact(), "contact");
 
完整示例代码如下:

效果图:

 代码如下 复制代码

MainActivity
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;

public class MainActivity extends Activity {
private WebView webView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//加载页面
webView = (WebView) findViewById(R.id.webView);
//允许JavaScript执行
webView.getSettings().setJavaScriptEnabled(true);
//找到Html文件,也可以用网络上的文件
webView.loadUrl("file:///android_asset/index.html");
// 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法
webView.addJavascriptInterface(new Contact(), "contact");
}

private final class Contact {
//JavaScript调用此方法拨打电话
public void call(String phone) {
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));
}

//Html调用此方法传递数据
public void showcontacts() {
String json = "[{"name":"zxx", "amount":"9999999", "phone":"18600012345"}]"; 
// 调用JS中的方法
webView.loadUrl("javascript:show('" + json + "')");
}
}
}


HTML:

 代码如下 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function show(jsondata){ 
var jsonobjs = eval(jsondata);
var table = document.getElementById("personTable");
for(var y=0; y<jsonobjs.length; y++){
var tr = table.insertRow(table.rows.length); 
var td1 = tr.insertCell(0);
var td2 = tr.insertCell(1);
td2.align = "center";
var td3 = tr.insertCell(2);
td3.align = "center";
td1.innerHTML = jsonobjs[y].name; 
td2.innerHTML = jsonobjs[y].amount; 
td3.innerHTML = "<a href='javascript:contact.call(""+ jsonobjs[y].phone+ "")'>"+ jsonobjs[y].phone+ "</a>"; 
}
}
</script>
</head>
<body onload="javascript:contact.showcontacts()">
<table border="0" width="100%" id="personTable" cellspacing="0">
<tr>
<td width="30%">姓名</td>
<td width="30%" align="center">存款</td>
<td align="center">电话</td>
</tr>
</table>
</body>
</html>

 

拨打电话需要添加权限:

 代码如下 复制代码

<uses-permission android:name="android.permission.CALL_PHONE" />

本文章介绍了关于android开发之zip文件压缩解压缩 ,有需要学习android手机开发时文件操作的朋友可以参考一下。
 代码如下 复制代码

//----------------- DirTraversal.java
package com.once;

import java.io.File;
import java.util.ArrayList;
import java.util.LinkedList;
/**
* 文件夹遍历
* @author once
*
*/
public class DirTraversal {

//no recursion
public static LinkedList<File> listLinkedFiles(String strPath) {
LinkedList<File> list = new LinkedList<File>();
File dir = new File(strPath);
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
File tmp;
while (!list.isEmpty()) {
tmp = (File) list.removeFirst();
if (tmp.isDirectory()) {
file = tmp.listFiles();
if (file == null)
continue;
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
} else {
System.out.println(tmp.getAbsolutePath());
}
}
return list;
}


//recursion
public static ArrayList<File> listFiles(String strPath) {
return refreshFileList(strPath);
}

public static ArrayList<File> refreshFileList(String strPath) {
ArrayList<File> filelist = new ArrayList<File>();
File dir = new File(strPath);
File[] files = dir.listFiles();

if (files == null)
return null;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
refreshFileList(files[i].getAbsolutePath());
} else {
if(files[i].getName().toLowerCase().endsWith("zip"))
filelist.add(files[i]);
}
}
return filelist;
}
}

//----------------- ZipUtils.java
package com.once;

import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

/**
* Java utils 实现的Zip工具
*
* @author once
*/
public class ZipUtils {
private static final int BUFF_SIZE = 1024 * 1024; // 1M Byte

/**
* 批量压缩文件(夹)
*
* @param resFileList 要压缩的文件(夹)列表
* @param zipFile 生成的压缩文件
* @throws IOException 当压缩过程出错时抛出
*/
public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException {
ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(
zipFile), BUFF_SIZE));
for (File resFile : resFileList) {
zipFile(resFile, zipout, "");
}
zipout.close();
}

/**
* 批量压缩文件(夹)
*
* @param resFileList 要压缩的文件(夹)列表
* @param zipFile 生成的压缩文件
* @param comment 压缩文件的注释
* @throws IOException 当压缩过程出错时抛出
*/
public static void zipFiles(Collection<File> resFileList, File zipFile, String comment)
throws IOException {
ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(
zipFile), BUFF_SIZE));
for (File resFile : resFileList) {
zipFile(resFile, zipout, "");
}
zipout.setComment(comment);
zipout.close();
}

/**
* 解压缩一个文件
*
* @param zipFile 压缩文件
* @param folderPath 解压缩的目标目录
* @throws IOException 当解压缩过程出错时抛出
*/
public static void upZipFile(File zipFile, String folderPath) throws ZipException, IOException {
File desDir = new File(folderPath);
if (!desDir.exists()) {
desDir.mkdirs();
}
ZipFile zf = new ZipFile(zipFile);
for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {
ZipEntry entry = ((ZipEntry)entries.nextElement());
InputStream in = zf.getInputStream(entry);
String str = folderPath + File.separator + entry.getName();
str = new String(str.getBytes("8859_1"), "GB2312");
File desFile = new File(str);
if (!desFile.exists()) {
File fileParentDir = desFile.getParentFile();
if (!fileParentDir.exists()) {
fileParentDir.mkdirs();
}
desFile.createNewFile();
}
OutputStream out = new FileOutputStream(desFile);
byte buffer[] = new byte[BUFF_SIZE];
int realLength;
while ((realLength = in.read(buffer)) > 0) {
out.write(buffer, 0, realLength);
}
in.close();
out.close();
}
}

/**
* 解压文件名包含传入文字的文件
*
* @param zipFile 压缩文件
* @param folderPath 目标文件夹
* @param nameContains 传入的文件匹配名
* @throws ZipException 压缩格式有误时抛出
* @throws IOException IO错误时抛出
*/
public static ArrayList<File> upZipSelectedFile(File zipFile, String folderPath,
String nameContains) throws ZipException, IOException {
ArrayList<File> fileList = new ArrayList<File>();

File desDir = new File(folderPath);
if (!desDir.exists()) {
desDir.mkdir();
}

ZipFile zf = new ZipFile(zipFile);
for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {
ZipEntry entry = ((ZipEntry)entries.nextElement());
if (entry.getName().contains(nameContains)) {
InputStream in = zf.getInputStream(entry);
String str = folderPath + File.separator + entry.getName();
str = new String(str.getBytes("8859_1"), "GB2312");
// str.getBytes("GB2312"),"8859_1" 输出
// str.getBytes("8859_1"),"GB2312" 输入
File desFile = new File(str);
if (!desFile.exists()) {
File fileParentDir = desFile.getParentFile();
if (!fileParentDir.exists()) {
fileParentDir.mkdirs();
}
desFile.createNewFile();
}
OutputStream out = new FileOutputStream(desFile);
byte buffer[] = new byte[BUFF_SIZE];
int realLength;
while ((realLength = in.read(buffer)) > 0) {
out.write(buffer, 0, realLength);
}
in.close();
out.close();
fileList.add(desFile);
}
}
return fileList;
}

/**
* 获得压缩文件内文件列表
*
* @param zipFile 压缩文件
* @return 压缩文件内文件名称
* @throws ZipException 压缩文件格式有误时抛出
* @throws IOException 当解压缩过程出错时抛出
*/
public static ArrayList<String> getEntriesNames(File zipFile) throws ZipException, IOException {
ArrayList<String> entryNames = new ArrayList<String>();
Enumeration<?> entries = getEntriesEnumeration(zipFile);
while (entries.hasMoreElements()) {
ZipEntry entry = ((ZipEntry)entries.nextElement());
entryNames.add(new String(getEntryName(entry).getBytes("GB2312"), "8859_1"));
}
return entryNames;
}

/**
* 获得压缩文件内压缩文件对象以取得其属性
*
* @param zipFile 压缩文件
* @return 返回一个压缩文件列表
* @throws ZipException 压缩文件格式有误时抛出
* @throws IOException IO操作有误时抛出
*/
public static Enumeration<?> getEntriesEnumeration(File zipFile) throws ZipException,
IOException {
ZipFile zf = new ZipFile(zipFile);
return zf.entries();

}

/**
* 取得压缩文件对象的注释
*
* @param entry 压缩文件对象
* @return 压缩文件对象的注释
* @throws UnsupportedEncodingException
*/
public static String getEntryComment(ZipEntry entry) throws UnsupportedEncodingException {
return new String(entry.getComment().getBytes("GB2312"), "8859_1");
}

/**
* 取得压缩文件对象的名称
*
* @param entry 压缩文件对象
* @return 压缩文件对象的名称
* @throws UnsupportedEncodingException
*/
public static String getEntryName(ZipEntry entry) throws UnsupportedEncodingException {
return new String(entry.getName().getBytes("GB2312"), "8859_1");
}

/**
* 压缩文件
*
* @param resFile 需要压缩的文件(夹)
* @param zipout 压缩的目的文件
* @param rootpath 压缩的文件路径
* @throws FileNotFoundException 找不到文件时抛出
* @throws IOException 当压缩过程出错时抛出
*/
private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath)
throws FileNotFoundException, IOException {
rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator)
+ resFile.getName();
rootpath = new String(rootpath.getBytes("8859_1"), "GB2312");
if (resFile.isDirectory()) {
File[] fileList = resFile.listFiles();
for (File file : fileList) {
zipFile(file, zipout, rootpath);
}
} else {
byte buffer[] = new byte[BUFF_SIZE];
BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile),
BUFF_SIZE);
zipout.putNextEntry(new ZipEntry(rootpath));
int realLength;
while ((realLength = in.read(buffer)) != -1) {
zipout.write(buffer, 0, realLength);
}
in.close();
zipout.flush();
zipout.closeEntry();
}
}
}

最近查看了一些关于开源Android游戏引擎的资料,觉得AndEngine功能强大,例子丰富,更新较快。由于初学,找资料化不少时间,现在将自己在网上收集的比较实用的资料网址贴在这里,大家一起学习和讨论。


1.AndEngine源码和例子代码地址:

Google Code:http://code.google.com/p/andengine/

AndEngine主页:http://www.andengine.org/

example地址:http://code.google.com/p/andengineexamples/

 

2.代码下载

先安装TortoiseHg,然后在想要存放代码的目录右键-->TortoiseHg-->clone

hg clone https://andengine.googlecode.com/hg/andengine

 

3.lib包下载

andengineexamples->Source->Browse->hg->lib(libs->armeabi)->点击想下载的Filename->View raw file

 

4.入门文章

中文 http://blog.111cn.net/cping1982/archive/2011/03/06/6227775.aspx

英文 http://www.andengine.org/forums/ ... rial-list-t417.html

 

虽然听说AndEngine在某些型号的机型上有不稳定的情况出现,但决定学习这个引擎是因为它内置了BOX2D物理引擎,在手机上测试运行也比较流畅,效果很给力~~~希望大家喜欢

本文章简单的介绍了关于andengine入门教程之学习笔记,有需要学习的同学可以参考一下下哦。

例子中主程序.launcher.ExampleLauncher主要继承自ExpandableListActivity的列表,
这里主要定义了另个枚举public enum ExampleGroup和enum Example ,平时因为像他们这样使用比较少,值得学习。

 代码如下 复制代码

enum Example {

// ===========================================================

// Elements

// ===========================================================

 

ANALOGONSCREENCONTROL(AnalogOnScreenControlExample.class, R.string.example_analogonscreencontrol),

ANALOGONSCREENCONTROLS(AnalogOnScreenControlsExample.class, R.string.example_analogonscreencontrols),

ANIMATEDSPRITES(AnimatedSpritesExample.class, R.string.example_animatedsprites),

AUGMENTEDREALITY(AugmentedRealityExample.class, R.string.example_augmentedreality),

AUGMENTEDREALITYHORIZON(AugmentedRealityHorizonExample.class, R.string.example_augmentedrealityhorizon),

AUTOPARALLAXBACKGROUND(AutoParallaxBackgroundExample.class, R.string.example_autoparallaxbackground),

BOUNDCAMERA(BoundCameraExample.class, R.string.example_boundcamera),

CHANGEABLETEXT(ChangeableTextExample.class, R.string.example_changeabletext),

COLLISIONDETECTION(CollisionDetectionExample.class, R.string.example_collisiondetection),

COLORKEYTEXTURESOURCEDECORATOR(ColorKeyTextureSourceDecoratorExample.class, R.string.example_colorkeytexturesourcedecorator),

COORDINATECONVERSION(CoordinateConversionExample.class, R.string.example_coordinateconversion),

CUSTOMFONT(CustomFontExample.class, R.string.example_customfont),

DIGITALONSCREENCONTROL(DigitalOnScreenControlExample.class, R.string.example_digitalonscreencontrol),

EASEFUNCTION(EaseFunctionExample.class, R.string.example_easefunction),

IMAGEFORMATS(ImageFormatsExample.class, R.string.example_imageformats),

LEVELLOADER(LevelLoaderExample.class, R.string.example_levelloader),

LINE(LineExample.class, R.string.example_line),

LOADTEXTURE(LoadTextureExample.class, R.string.example_loadtexture),

MENU(MenuExample.class, R.string.example_menu),

MODPLAYER(ModPlayerExample.class, R.string.example_modplayer),

MOVINGBALL(MovingBallExample.class, R.string.example_movingball),

MULTIPLAYER(MultiplayerExample.class, R.string.example_multiplayer),

MULTITOUCH(MultiTouchExample.class, R.string.example_multitouch),

MUSIC(MusicExample.class, R.string.example_music),

PAUSE(PauseExample.class, R.string.example_pause),

PATHMODIFIER(PathModifierExample.class, R.string.example_pathmodifier),

PARTICLESYSTEMNEXUS(ParticleSystemNexusExample.class, R.string.example_particlesystemnexus),

PARTICLESYSTEMCOOL(ParticleSystemCoolExample.class, R.string.example_particlesystemcool),

PARTICLESYSTEMSIMPLE(ParticleSystemSimpleExample.class, R.string.example_particlesystemsimple),

PHYSICSCONLLISIONFILTERING(PhysicsCollisionFilteringExample.class, R.string.example_physicscollisionfiltering),

PHYSICS(PhysicsExample.class, R.string.example_physics),

PHYSICSFIXEDSTEP(PhysicsFixedStepExample.class, R.string.example_physicsfixedstep),

PHYSICSJUMP(PhysicsJumpExample.class, R.string.example_physicsjump),

PHYSICSREVOLUTEJOINT(PhysicsRevoluteJointExample.class, R.string.example_physicsrevolutejoint),

PHYSICSREMOVE(PhysicsRemoveExample.class, R.string.example_physicsremove),

PINCHZOOM(PinchZoomExample.class, R.string.example_pinchzoom),

RECTANGLE(RectangleExample.class, R.string.example_rectangle),

REPEATINGSPRITEBACKGROUND(RepeatingSpriteBackgroundExample.class, R.string.example_repeatingspritebackground),

ROTATION3D(Rotation3DExample.class, R.string.example_rotation3d),

SHAPEMODIFIER(ShapeModifierExample.class, R.string.example_shapemodifier),

SHAPEMODIFIERIRREGULAR(ShapeModifierIrregularExample.class, R.string.example_shapemodifierirregular),

SOUND(SoundExample.class, R.string.example_sound),

SPLITSCREEN(SplitScreenExample.class, R.string.example_splitscreen),

SPRITE(SpriteExample.class, R.string.example_sprite),

SPRITEREMOVE(SpriteRemoveExample.class, R.string.example_spriteremove),

STROKEFONT(StrokeFontExample.class, R.string.example_strokefont),

SUBMENU(SubMenuExample.class, R.string.example_submenu),

TEXT(TextExample.class, R.string.example_text),

TEXTMENU(TextMenuExample.class, R.string.example_textmenu),

TEXTUREOPTIONS(TextureOptionsExample.class, R.string.example_textureoptions),

TMXTILEDMAP(TMXTiledMapExample.class, R.string.example_tmxtiledmap),

TICKERTEXT(TickerTextExample.class, R.string.example_tickertext),

TOUCHDRAG(TouchDragExample.class, R.string.example_touchdrag),

UNLOADRESOURCES(UnloadResourcesExample.class, R.string.example_unloadresources),

UPDATETEXTURE(UpdateTextureExample.class, R.string.example_updatetexture),

XMLLAYOUT(XMLLayoutExample.class, R.string.example_xmllayout),

ZOOM(ZoomExample.class, R.string.example_zoom),

 

BENCHMARK_ANIMATION(AnimationBenchmark.class, R.string.example_benchmark_animation),

BENCHMARK_PARTICLESYSTEM(ParticleSystemBenchmark.class, R.string.example_benchmark_particlesystem),

BENCHMARK_PHYSICS(PhysicsBenchmark.class, R.string.example_benchmark_physics),

BENCHMARK_SHAPEMODIFIER(ShapeModifierBenchmark.class, R.string.example_benchmark_shapemodifier),

BENCHMARK_SPRITE(SpriteBenchmark.class, R.string.example_benchmark_sprite),

BENCHMARK_TICKERTEXT(TickerTextBenchmark.class, R.string.example_benchmark_tickertext),

 

APP_CITYRADAR(CityRadarActivity.class, R.string.example_app_cityradar),

 

GAME_SNAKE(SnakeGameActivity.class, R.string.example_game_snake),

GAME_RACER(RacerGameActivity.class, R.string.example_game_racer);

 

// ===========================================================

// Constants

// ===========================================================

 

// ===========================================================

// Fields

// ===========================================================

 

public final Class<? extends BaseGameActivity> CLASS;

public final int NAMERESID;

 

// ===========================================================

// Constructors

// ===========================================================

 

private Example(final Class<? extends BaseGameActivity> pExampleClass, final int pNameResID) {

this.CLASS = pExampleClass;

this.NAMERESID = pNameResID;

}

 

// ===========================================================

// Getter & Setter

// ===========================================================

 

// ===========================================================

// Methods for/from SuperClass/Interfaces

// ===========================================================

 

// ===========================================================

// Methods

// ===========================================================

 

// ===========================================================

// Inner and Anonymous Classes

// ===========================================================

}

上面的public final Class<? extends BaseGameActivity> CLASS;表示任何继承自BaseGameActivity的类型,属于泛型,
因为andengine的例子程序都是继承自BaseGameActivity。

 代码如下 复制代码

public enum ExampleGroup {

// ===========================================================

// Elements

// ===========================================================

 

SIMPLE(R.string.examplegroup_simple,

Example.LINE, Example.RECTANGLE, Example.SPRITE, Example.SPRITEREMOVE),

MODIFIER_AND_ANIMATION(R.string.examplegroup_modifier_and_animation,

Example.MOVINGBALL, Example.SHAPEMODIFIER, Example.SHAPEMODIFIERIRREGULAR, Example.PATHMODIFIER, Example.ANIMATEDSPRITES, Example.EASEFUNCTION, Example.ROTATION3D ),

TOUCH(R.string.examplegroup_touch,

Example.TOUCHDRAG, Example.MULTITOUCH, Example.ANALOGONSCREENCONTROL, Example.DIGITALONSCREENCONTROL, Example.ANALOGONSCREENCONTROLS, Example.COORDINATECONVERSION, Example.PINCHZOOM),

PARTICLESYSTEM(R.string.examplegroup_particlesystems,

Example.PARTICLESYSTEMSIMPLE, Example.PARTICLESYSTEMCOOL, Example.PARTICLESYSTEMNEXUS),

MULTIPLAYER(R.string.examplegroup_multiplayer,

Example.MULTIPLAYER),

PHYSICS(R.string.examplegroup_physics,

Example.COLLISIONDETECTION, Example.PHYSICS, Example.PHYSICSFIXEDSTEP, Example.PHYSICSCONLLISIONFILTERING, Example.PHYSICSJUMP, Example.PHYSICSREVOLUTEJOINT, Example.PHYSICSREMOVE ),

TEXT(R.string.examplegroup_text,

Example.TEXT, Example.TICKERTEXT, Example.CHANGEABLETEXT, Example.CUSTOMFONT, Example.STROKEFONT),

AUDIO(R.string.examplegroup_audio,

Example.SOUND, Example.MUSIC, Example.MODPLAYER),

ADVANCED(R.string.examplegroup_advanced,

Example.SPLITSCREEN, Example.BOUNDCAMERA ), // Example.AUGMENTEDREALITY, Example.AUGMENTEDREALITYHORIZON),

BACKGROUND(R.string.examplegroup_background,

Example.REPEATINGSPRITEBACKGROUND, Example.AUTOPARALLAXBACKGROUND, Example.TMXTILEDMAP),

OTHER(R.string.examplegroup_other,

Example.PAUSE, Example.MENU, Example.SUBMENU, Example.TEXTMENU, Example.ZOOM , Example.IMAGEFORMATS, Example.TEXTUREOPTIONS, Example.COLORKEYTEXTURESOURCEDECORATOR, Example.LOADTEXTURE, Example.UPDATETEXTURE, Example.XMLLAYOUT, Example.LEVELLOADER),

APP(R.string.examplegroup_app,

Example.APP_CITYRADAR),

GAME(R.string.examplegroup_game,

Example.GAME_SNAKE, Example.GAME_RACER),

BENCHMARK(R.string.examplegroup_benchmark,

Example.BENCHMARK_SPRITE, Example.BENCHMARK_SHAPEMODIFIER, Example.BENCHMARK_ANIMATION, Example.BENCHMARK_TICKERTEXT, Example.BENCHMARK_PARTICLESYSTEM, Example.BENCHMARK_PHYSICS);

 

// ===========================================================

// Constants

// ===========================================================

 

// ===========================================================

// Fields

// ===========================================================

public final Example[] EXAMPLES;

public final int NAMERESID;

 

// ===========================================================

// Constructors

// ===========================================================

 

private ExampleGroup(final int pNameResID, final Example ... pExamples) {

this.NAMERESID = pNameResID;

this.EXAMPLES = pExamples;

}

 

// ===========================================================

// Getter & Setter

// ===========================================================

 

// ===========================================================

// Methods for/from SuperClass/Interfaces

// ===========================================================

 

// ===========================================================

// Methods

// ===========================================================

 

// ===========================================================

// Inner and Anonymous Classes

// ===========================================================

}

主程序就比较简单,不再介绍了。

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • c# 三种方法调用WebService接口

    这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • c#动态调用Webservice的两种方法实例

    这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • c#中WebService的介绍及调用方式小结

    这篇文章主要给大家介绍了关于c#中的WebService及其调用方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20