当前位置:  编程技术>综合
本页文章导读:
    ▪Android--Android扑克牌猜点小游戏      该游戏是简单的猜点游戏,1 点为正确的点数     java代码:   package com.mrzhu.test0109_project; import java.util.Random; import android.app.Activity; import android.os.Bundle; import android.view.View; import android..........
    ▪Android的数据处理:使用annotation实现JSON字符串解析为java对象      Annotation是Java语言所提供的一种很有用的机制,特别在用于Java对象的描述化处理时能大大简化代码量。在阅读本文之前最好先了解一下Java Annotation的基础知识,在这一方面在网上很容易找到学.........
    ▪JQuery Mobile入门——页面缓存      1、在JQuery Mobile中,可以通过页面缓存的方式将访问过的历史内容写入页面文档的缓存中,当用户重新访问时,不需要重新加载,只要从缓存中读取就可以。 2、设置页面为缓存,只需要在page.........

[1]Android--Android扑克牌猜点小游戏
    来源: 互联网  发布时间: 2013-11-10

该游戏是简单的猜点游戏,1 点为正确的点数

 

 

java代码:

 

package com.mrzhu.test0109_project;

import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class Main extends Activity {
 private ImageView imav1;
 private ImageView imav2;
 private ImageView imav3;
 private Button reset;//重新开始按钮
 private TextView content;//显示结果
 private int[] arr;//0到2的数组,用于洗牌
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //取得控件
  imav1 = (ImageView) findViewById(R.id.imv1);
  imav2 = (ImageView) findViewById(R.id.imv2);
  imav3 = (ImageView) findViewById(R.id.imv3);
  reset = (Button) findViewById(R.id.reset);
  content = (TextView) findViewById(R.id.content);
  //为重新开始按钮设置监听
  reset.setOnClickListener(new resetOnClickListener());
 }


 //判断点击了哪个牌,响应相应事件
 public void click(View v){
  if(v.getId() == imav1.getId()){
   imav1Click();
  }else if(v.getId() == imav2.getId()){
   imav2onClick();
  }else if(v.getId() == imav3.getId()){
   imav3onClick();
  }
 }
 
 //单击了第一张牌响应的事件
 public void imav1Click() {
  retu();
  if(arr[0] == 0)
   content.setText("恭喜你,你猜对了!");
  else
   content.setText("哦哦,猜错了!");
  imav2.setAlpha(100);
  imav3.setAlpha(100);
  imav2.setClickable(false);
  imav3.setClickable(false);
 }
 
 //单击了第二张牌响应的事件
 public void imav2onClick() {
  retu();
  if(arr[1] == 0)
   content.setText("恭喜你,你猜对了!");
  else
   content.setText("哦哦,猜错了!");
  imav1.setAlpha(100);
  imav3.setAlpha(100);
  imav1.setClickable(false);
  imav3.setClickable(false);
 }
 
 //单击了第三张牌响应的事件
 public void imav3onClick() {
  retu();
  if(arr[2] == 0)
   content.setText("恭喜你,你猜对了!");
  else
   content.setText("哦哦,猜错了!");
  imav1.setAlpha(100);
  imav2.setAlpha(100);
  imav1.setClickable(false);
  imav2.setClickable(false);
 }

 //重新开始按钮事件
 public class resetOnClickListener implements OnClickListener{
  public void onClick(View v) {
   imav1.setImageResource(R.drawable.p04);
   imav2.setImageResource(R.drawable.p04);
   imav3.setImageResource(R.drawable.p04);
   imav1.setAlpha(255);
   imav2.setAlpha(255);
   imav3.setAlpha(255);
   content.setText("猜猜看");
   imav1.setClickable(true);
   imav2.setClickable(true);
   imav3.setClickable(true);
  }
 }

 //翻牌时调用的方法,生成不重复的随机数加到数组中,设置控件显示的图片
 private void retu(){
  Random random = new Random();
  arr = new int[3];
  for(int i = 0; i < 3; ++i){
   int index = random.nextInt(3);
   if(arr[index] != 0)
    i--;
   else
    arr[index] = i;
  }
  imav1.setImageResource(R.drawable.p01 + arr[0]);
  imav2.setImageResource(R.drawable.p01 + arr[1]);
  imav3.setImageResource(R.drawable.p01 + arr[2]);
 }
}

 

 

main.xml代码:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/content"
  android:textSize="20px"
  android:text="猜猜看" />
  
 <LinearLayout
  android:orientation="horizontal"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
 >
  <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src=/blog_article/"@drawable/p04"_br/index.html>    android:id="@+id/imv1"
   android:onClick="click"
   />
  <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src=/blog_article/"@drawable/p04"_br/index.html>    android:id="@+id/imv2"
   android:onClick="click"
  />
  <ImageView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src=/blog_article/"@drawable/p04"_br/index.html>    android:id="@+id/imv3"
   android:onClick="click"
   />
 </LinearLayout>

 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="重新开始"
  android:id="@+id/reset"
  />
</LinearLayout>

 资源下载地址:http://download.csdn.net/detail/zlqqhs/4977126

 

作者:zlQQhs 发表于2013-1-9 13:29:42 原文链接
阅读:43 评论:0 查看评论

    
[2]Android的数据处理:使用annotation实现JSON字符串解析为java对象
    来源: 互联网  发布时间: 2013-11-10

Annotation是Java语言所提供的一种很有用的机制,特别在用于Java对象的描述化处理时能大大简化代码量。在阅读本文之前最好先了解一下Java Annotation的基础知识,在这一方面在网上很容易找到学习资料,比如下面这一篇:

JAVA ANNOTATION详解

JSON与Java对象之间的形式化转换在一些J2EE的框架中有提供,但是在Android中没有实现。本文主要介绍如何通过annotation实现一种形式化的方法,在Android上实现JSON字符串与Java对象之间的相互转化。

首先定义一个用于annotaion类型,在定义Java类时,可以使用该类型来标记哪些域(Field)需要输出到JSON字符串中。


@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME) 
public @interface JSONValue {
	String tag() default "";
}

该annotation包括一个变量tag,这是指其所标记的域在JSON字符串中的前导字符串(名称)。

然后定义一个转换工具类,用于Java对象与JSON对象之间的转换。

public class JSONConverter {

	public static void fromJSon(String json_string, Object o) throws Exception {
		JSONObject = new JSONObject(json_string);
                JSONObject jo = new JSONObject();
		Field[] fields = o.getClass().getFields();
		for(Field f : fields) {
			if(f.isAnnotationPresent(QueryValue.class)) {
				JSONValue jv = f.getAnnotation(JSONValue.class);
				String tag = jv.tag();if(tag.length() > 0) {
					if(f.getType().getSimpleName().equals("int")) {
						f.setInt(o, jo.optInt(tag));
					}
					else {
						f.set(o, jo.optString(tag));
					}
				}
			}
		}
		return jo.toString();
	}
	
	public static String toJSon(Object o) throws Exception {
		JSONObject = new JSONObject();
		Field[] fields = o.getClass().getFields();
		for(Field f : fields) {
			if(f.isAnnotationPresent(QueryValue.class)) {
				JSONValue jv = f.getAnnotation(JSONValue.class);
				String tag = jv.tag();
				if(tag.length() > 0) {
					if(f.getType().getSimpleName().equals("int")) {
						jo.put(tag, f.getInt(o));
					}
					else {
						Object v = f.get(o);
						if(v != null) jo.put(tag, v);
					}
				}
			}
		}
		return jo.toString();
	}
}

上述工具类实现了两个静态方法:fromJSON()用于从JSON对象中解析出Java对象,toJSON()用于将一个Java对象转换为JSON对象。在上述示例中仅支持int、String两种数据类型,这已经能满足绝大多数应用的需要。如果还想支持其它类型,则需要根据示例进行修改。另外,上述示例尚不支持JSON数组类型。


然后是定义需要转为为JSON对象的Java类型,定义时需要使用前面定义的annotation,比如:

class MyObject {
	@JSONValue(tag="id")
	public int mId;
	@JSONValue(tag="name")
	public String mName;
}

在定义需要输出到JSON对象的域时,将该域定义为public类型,并使用JSONValue进行标记,同时指定该域在JSON对象中的前导字符串(名称)。在使用时可以很简单地将该类型的对象转为JSON字符串:

MyObject o = new MyObject();
o.mId = 123;
o.mName = "张三";
String json = JSONConverter.toJSON(o);

转换后的JSON字符串型为:{"id":123,"name":"张三”};

JSON字符串也可以很容易解析成Java对象:

String json_string =  {"id":123,"name":"张三”};
MyObject o = new MyObject();
JSONConverter.fromJSON(json_string, o);



通过上述方法,MyObject的子类同样可以与JSON对象进行双向转换,子类中也可以定义自己的JSONValue。





作者:choujs 发表于2013-1-9 13:27:29 原文链接
阅读:40 评论:0 查看评论

    
[3]JQuery Mobile入门——页面缓存
    来源: 互联网  发布时间: 2013-11-10

1、在JQuery Mobile中,可以通过页面缓存的方式将访问过的历史内容写入页面文档的缓存中,当用户重新访问时,不需要重新加载,只要从缓存中读取就可以。

2、设置页面为缓存,只需要在page容器中添加data-dom-cache属性,并将属性设置为true。在JQuery Mobile中设置缓存页面还有另外一种方法,即通过JavaScript代码设置一个全局性的JQuery Mobile属性值为true,代码如:$.mobile.page.prototype.options.domCache=true

3、示例代码:

<!DOCTYPE HTML >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <meta name="viewport" content="width=device-width,initial-scale=1"/>
  <link href=/blog_article/"Css/jquery.mobile-1.2.0.min.css" rel="Stylesheet" type="text/css"/>
  <script src=/blog_article/"Js/jquery-1.8.3.min.js" type"text/javascript"></script>
  <script src=/blog_article/"Js/jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
 </HEAD>
 <BODY>
  <div data-role="page" data-dom-cache="true">
    <div data-role="header"><h1>缓存页面</h1></div>
<div data-role="content">
 <p>这是一个被缓存的页面</a></p>
</div>
<div data-role="footer"><h4>@2013 3i studio</h4></div>
  </div>
 </BODY>
</HTML>


4、效果图预览:



作者:liang408015204 发表于2013-1-9 13:24:26 原文链接
阅读:37 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问 iis7站长之家
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


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

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

浙ICP备11055608号-3