您的位置:首页 > 移动开发

背单词App开发日记2

2015-07-19 13:32 465 查看
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的知识,在进行下一步的打算.看来我之前想的还是太简单了.....

加油!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: