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

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

效果图:


实例16--心理测试


实例16--心理测试

实例16--心理测试

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();}}@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubswitch(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();}}@Overridepublic void onCheckedChanged(RadioGroup arg0, int arg1) {// TODO Auto-generated method stubfor(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

更多相关文章

  1. android之首选项相关 Preferences(一) (转)
  2. android实现UI控件自动注入到Activity
  3. Android进阶自定义控件之滑动开关
  4. 大量Android面试题目来袭
  5. android之控件自定义(seekBar)
  6. Android 在onCreate()方法中获取控件宽高值为0解决方案
  7. Android中ListView实现子控件点击事件后ListView点击事件失效解
  8. Android 实现自定义控件效果1
  9. 一步一步学android之基本控件——TextView组件

随机推荐

  1. Dynamics 365中自定义工作流活动更新了输
  2. Kubernetes使用 S3FS 将 AWS S3 作为持久
  3. Dynamics 365使用代码发送邮件给指定邮箱
  4. 如何解决Dynamics 365的错误:用户身份验证
  5. 在 996 这事上,搜狗 CEO 王小川“人设崩塌
  6. Get-CrmSetting返回Unable to connect to
  7. 将Dynamics 365中的用户及其角色、角色导
  8. 与大家分享一下,在workerman开发中遇到的
  9. 一种提升连接Dynamics 365性能的方法
  10. 阿里一面:CyclicBarrier和CountDownLatch