`
一口三个汉堡
  • 浏览: 115929 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

实例16--心理测试

阅读更多

隔了两个月,又重新开始将j2me转成android,7月8月,我先经过期末考,又到一家信息科技公司开发android手机客户端,或许是自己变懒了,所以就没有继续转,现在开学了,空余时间又开始多了,所以又开始了...两个月自己也成长了许多.

下面给出实例16--心理测试的主要代码,对于将j2me转成android,我有了新的看法,首先我要了解j2me的原理,并了解作者的思想,然后将这种思想在android中实现,而不单单是代码的转换.这次的例子我昨天晚上就要开始转,但一直在犹豫怎么转,最后我是将源代码仔细的看了一遍又一遍,然后用android自己写出来的,当然很多东西跟源代码是一样.

效果图:




 

 

Demon_16Activity.java

package com.wjh.demon_16;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class Demon_16Activity extends Activity implements OnClickListener, OnCheckedChangeListener {
    /** Called when the activity is first created. */
	//type控制对话框的显示内容,
	//0显示所有题目的标题,1显示被选题目的问句及选项,2显示测试结果
	private static final int TEST_BUTTON_ID = 1;
	private static final int EXIT_BUTTON_ID = 2;
	private static final int RETURN_BUTTON_ID = 3;
	private int type = 0;
	//标题的控件
	private LinearLayout titlesLLayout;			
	private RadioGroup titlesRGroup;			
	private TextView titlesTView;					
	//选项的控件
	private LinearLayout optionsLayout;			
	private TextView optionsTView;				
	private RadioGroup optionRGroup;
	//结果的显示控件
	private TextView resultTView;				
	private ArrayList<TestItem> testItems;		//存储所有的题目
	private int titleItem = -1;					//当前选择的题目
	private int optionItem = -1;				//当前选择的选项
	private Button testButton;                 	//测试指令
	private Button exitButton;               	//退出指令
	private Button returnButton;			  	//返回按钮
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getView();
        LoadText();
        
    }
    private void getView()
    {
    	//获得标题的控件
    	titlesLLayout = (LinearLayout)findViewById(R.id.title_ll);
    	titlesRGroup = (RadioGroup)findViewById(R.id.title_rg);
    	titlesRGroup.setOnCheckedChangeListener(this);
    	titlesTView = (TextView)findViewById(R.id.title_tv);
    	titlesTView.setText("心理测试");
    	//获得选项的控件
    	optionsLayout = (LinearLayout)findViewById(R.id.options_ll);
    	optionsTView = (TextView)findViewById(R.id.options_tv);
    	//获得按钮
    	testButton = (Button)findViewById(R.id.test_bt);
    	testButton.setId(TEST_BUTTON_ID);
    	testButton.setOnClickListener(this);
    	exitButton =(Button)findViewById(R.id.exit_bt);
    	exitButton.setId(EXIT_BUTTON_ID);
    	exitButton.setOnClickListener(this);
    	returnButton= (Button)findViewById(R.id.return_bt);
    	returnButton.setId(RETURN_BUTTON_ID);
    	returnButton.setOnClickListener(this);
    	resultTView = (TextView)findViewById(R.id.result_tv);
    	
    }
	private void LoadText(){
		testItems = new ArrayList<TestItem>();							//题目容器
		try{
			byte b[] = new byte[10240];						//分配10K大小的缓存	
			InputStream is = getResources().openRawResource(R.raw.test);
			int total = is.read(b);								//一次性将数据全部读出
			int start = 0;
			int index = 0;
			while( start < total )
			{//当 start < total 时,表明还有尚未读取的题目
				testItems.add(new TestItem(this));					//为新题目分配存储空间
				start = testItems.get(index).Load( b, start, total );	//读取一个题目的全部信息
				RadioButton rButton = new RadioButton(this);
				rButton.setText(testItems.get(index).Title);
				titlesRGroup.addView(rButton, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);	//保存题目的标题
				index ++;
			}
			is.close();
		}
		catch (IOException e){									//输出错误信息
			e.printStackTrace();
		}
	}
	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch(arg0.getId())
		{
		case TEST_BUTTON_ID:
			switch( type )
			{
				case 0:						//当前对话框上显示所有标题
					if( titleItem >= 0 )
					{		//如果选择某个题目,则更换显示内容
						if(optionsLayout!=null)
						{
						optionsLayout.removeView(optionRGroup);
						}
						optionRGroup = testItems.get(titleItem).choicegroup;
						optionsLayout.addView(optionRGroup);
						optionsTView.setText(testItems.get(titleItem).questionStr);
						optionRGroup.setOnCheckedChangeListener(this);
						titlesLLayout.setVisibility(View.GONE);
						optionsLayout.setVisibility(View.VISIBLE);
						type = 1;
					}
					break;
				case 1:						//当前对话框上显示问句和选项
					int n = optionItem;
					if( n >= 0 ){			//如果选择某个选项,则更换显示内容
						resultTView.setText(testItems.get(titleItem).results[n]);
						resultTView.setVisibility(View.VISIBLE);
						optionsLayout.setVisibility(View.GONE);
						type = 2;
						testButton.setVisibility(View.GONE);
						returnButton.setVisibility(View.VISIBLE);
					}
					break;
			}
			break;
		case RETURN_BUTTON_ID:
				resultTView.setVisibility(View.GONE);
				titlesLLayout.setVisibility(View.VISIBLE);
				returnButton.setVisibility(View.GONE);
				testButton.setVisibility(View.VISIBLE);
				type = 0;
				break;
		case EXIT_BUTTON_ID:
				this.finish();
		}
		
	}
	@Override
	public void onCheckedChanged(RadioGroup arg0, int arg1) {
		// TODO Auto-generated method stub
			for(int i = 0;i<arg0.getChildCount();i++)
			{
				RadioButton btn = (RadioButton)arg0.getChildAt(i);
				if(btn.isChecked())
				{
					if(arg0 == titlesRGroup)
					{
						titleItem = i;
					}else  if(arg0 == optionRGroup)
					{
						optionItem = i;
					}
				}
			}
		
	}
}

 源码包:Demon_16.zip

apk文件(后缀改为apk):Demon_16.zip

  • 大小: 14.5 KB
  • 大小: 20.7 KB
  • 大小: 16.3 KB
0
0
分享到:
评论
1 楼 人可德福 2015-09-23  
非常感谢附上源码包的楼主

相关推荐

    行业分类-设备装置-一种心理学教学用和心理测试实验装置.zip

    标题中的“行业分类-设备装置-一种心理学教学用和心理测试实验装置”表明这是一个与心理学教育和测试设备相关的文档集合。这种装置可能被设计用于心理学课堂教育,帮助学生理解和实践心理测试过程,同时也可能用于...

    利用数学建模心理测试研究的实例

    利用数学建模心理测试研究的实例

    心理测试系统(源码)

    心理测试系统(源码)是基于ASP(Active Server Pages)技术构建的一个在线应用,用于进行心理测试和评估。ASP是一种由微软开发的服务器端脚本环境,它允许开发者使用VBScript或其他兼容的语言来创建动态网页。这个...

    心理测试for leadbbs3.14

    《心理测试 for leadbbs3.14:一个经典的论坛插件分析》 "心理测试for leadbbs3.14"是一个专为leadbbs3.14论坛系统设计的经典插件,它通过一系列html页面,为用户提供了有趣且具有教育意义的心理测试功能。这个插件...

    心理测试程序.zip

    心理测试程序.zip是一个包含了...综上所述,心理测试程序.zip是一个全面展示微信小程序开发技术的实例,涵盖了页面设计、事件处理、数据管理、路由跳转等多个方面,对于学习和实践微信小程序开发具有很好的参考价值。

    Android大学生心理健康测试源码_android_心理健康_

    下面,我们将详细探讨这款应用涉及的主要技术点和心理测试的实现方式。 首先,Android应用的基本架构包括UI界面、业务逻辑和数据管理三个部分。UI界面是用户与应用交互的窗口,通常由布局文件(XML)定义,使用Java...

    心理测试网站

    【标题】:“心理测试网站”项目 【描述】:这个项目是一个基于Java技术栈的心理测试网站,使用了Tomcat作为应用服务器,实现了Serverlet技术来处理客户端请求。它旨在为用户提供一个在线平台,进行各种心理测试,...

    数学建模心理测试研究开发教程.docx

    - **实例介绍**:选择一个具体的心理测试研究案例。 - **数据处理**:包括数据收集、清洗和预处理等步骤。 - **模型建立与验证**:从描述性统计分析到最终模型的建立和验证过程。 #### 九、结论与展望 - **总结**...

    优秀的软件测试人员思考问题的方式

    通过不断学习和应用认识论与认知心理学的知识,测试员可以显著提高自己的测试水平,从而为产品的质量和用户体验做出更大贡献。最终,优秀的测试不仅体现在技术层面,更是一种深刻理解和应用科学方法的过程。

    ChatGPT 应用实例-教师版

    下面将详细探讨这些应用实例。 1. **教育资源获取**:教师可以通过ChatGPT寻找各种教学资源,如课程计划、教材、教学方法和实用工具。只需向ChatGPT询问相关主题,它就能提供大量的信息和建议,帮助教师构建和完善...

    资料-设计实例.zip

    - 色彩理论:理解色彩心理学,选择能传达正确情绪和信息的颜色搭配。 - 字体排印:选择合适的字体,考虑字间距、行距,提升阅读体验。 - 图标设计:简洁、直观的图标能有效传达信息,提升用户界面的易用性。 ...

    小程序-53-青少年心理健康科普平台微信小程序-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户...

    小程序-70-心理咨询服务微信小程序的设计与实现-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户...

Global site tag (gtag.js) - Google Analytics