背单词App开发日记2

2015.07.17

今天主要学习了监听器捆绑和线程使用.分别实现了用按钮进行跳转和延时自动跳转这两个功能.还是蛮有成就感的!

下面分别记录一下学习成果:

1.按钮跳转控件----监听器捆绑

首先,当然是定义出一个按钮了,同时需要注册一个id

<Button 
        android:id="@+id/startButton"
        android:layout_width="1.5in"
        android:layout_height="0.5in"
        android:layout_marginTop="640sp"
        android:layout_centerHorizontal="true"
        android:text="@string/enter_settings" 
        android:textSize="30sp"
        android:textStyle="italic" />
这只是一个很简单的写有"Start"的开始按钮,不在多说.

然后是在相应的Java文件里面声明变量并且找出他的ID以便后面的捆绑处理.

<pre name="code" class="java">import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button startButton=null;//声明一个按钮
<span>	</span>//复写onCreate方法
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);//设定控件的定义文件
		startButton=(Button)findViewById(R.id.startButton);//在R.java里面找出这个按钮对应的id
		startButton.setOnClickListener(new StartButtonListener());//设置一个监听器并进行捆绑
	}
	
	class StartButtonListener implements OnClickListener 
	{
		//复写onClick方法利用Intent实现控件的跳转
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			System.out.println("ssssss");
			Intent intent=new Intent();
			intent.setClass(MainActivity.this,SettingsActivity.class);
			MainActivity.this.startActivity(intent);
		}
		
	}
}

 需要注意的一是一定要先findViewById,否则会找不到按钮;再有一个就是我在写的时候发生的错误----那个 setOnClickListener一直没办法通过,通过eclipse的提示修正后还是不行(运行之后就崩溃了...)经过多方查询之后才知道原来是包引用错了........其实原因是eclipse没有那么智能,他的第一条帮助提示让你引用的是 
android.content.DialogInterface.OnClickListener;但其实应该是android.view.View.OnClickListener(阿西/....).其他的没什么要说的,之后就可以通过开始页面的按钮来跳转到下一个控件了!哈哈 


2.延时跳转控件----handler()线程实现

当然我希望我的app是那种打开开始图片过一会就自动跳转的那种.所以我又看了一点如何用handler进行实现---它的原理其实就是多线程执行任务,换句话就是通过一个任务队列来实现延时执行任务的功能,进一步的,还可以让消息的传送也经过队列(是另一个称为"消息队列"),这样就可以用多线程来完成我们希望并行执行的任务.所以还是有必要学习一下的.

这种办法主要用的就是handler()对象的postDelayed方法和Java语法里面的匿名内部类的方式.代码如下.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

/*欢迎界面*/

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
/*      异常处理(既然是多线程,最好是加上异常处理,这里比较简单,所以我只是把它放到了注释里面)
 		PackageManager pm = getPackageManager();
		try {
		    PackageInfo pi = pm.getPackageInfo("com.lyt.android", 0);
		    TextView version_number = (TextView) findViewById(R.id.version);
		    version_number.setText("Version " + pi.versionName);
		} catch (NameNotFoundException e) {
		    e.printStackTrace();
		}*/

		new Handler().postDelayed(new Runnable(){//匿名内部类
<span style="white-space:pre">		</span>//复写run方法
		@Override
		public void run() {//还是用intent进行控件跳转
		    Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
		    startActivity(intent);
		    MainActivity.this.finish();
		}
		
		}, 2000);//2000是延迟时间,单位是ms
	}
}
其实上一种用按钮的方式同样可以写成匿名内部类的形式,只是我没有写........

运行一下就可以看到延时跳转页面的效果了,好开森有木有!!



接下来开始搞最重要的部分----怎样实现单词库.我好头痛啊!!!!!根本不知道怎么办,互无头绪.....55555555想到的办法有用文件读写来实现或者用SQLite来做.然而问题来了:1)怎么样把单词存进去2)存档断点怎么设置3

)怎样让单词显示在控件里面. 一页一个,我又不能做5000个控件来搞这个........又问了问会一点的同学,他告诉我可以用AFINAL.我打算在接下来的日子里学一学AFINAL的知识,在进行下一步的打算.看来我之前想的还是太简单了.....

加油!!!!!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值