《Android编程权威指南》-读书笔记(五)
-挑战练习
为了巩固学习,为了建立信心。开始进行如下挑战:
挑战练习一:为TextView添加监听器
书中给出了提示,TextView,Button都是View的子类,都可以设置OnClickListener()直接加入如下代码:
mQuestionTextView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
mCurrentIndex = (mCurrentIndex+1) % mQuestionBank.length;
updateQuestion();
}
});
本次修改修改了一个文件,直接在逻辑层给TextView绑定一个事件就可以了。
添加有代码如下:
http://git.oschina.net/canglin/GeoQuiz/commit/6b35ec258c780c9a9d4016c9c3a29e568f21a489
挑战练习二:添加后退按钮
- 首先我们要在 layout/activity_quiz.xml里添加控件
- 然后我们在values/strings.xml里添加按钮上的文字
- 定义mPrevButton的变量
- 定义PrevButton的事件
在添加控件后,按钮会顺序排列,为了让2个button在一行,我用了一个LinearLayout他的orientation属性为horizontal。
在定义按钮的文字的时候,我还是用的@string/prev_button,然后在strings.xml里面添加了文字
当Prev按钮到达问题的第一个的时候,我们停止回退。代码如下:
mPrevButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(mCurrentIndex >0)
{
mCurrentIndex--;
}
updateQuestion();
}
});
本次挑战我修改了3个文件
代码如下:
http://git.oschina.net/canglin/GeoQuiz/commit/a7868341ae5efff75a024f5e7e6f5197875d0517
挑战练习三:从按钮到图标按钮
要求:将用户界面上的普通Button组件替换成ImageButton组件。
ImageButton组件继承ImageView。Button组件则继承Textview。他们的继承关系如下:
所以他们是可以直接替换掉的,但是ImageButton是没有Text属性的所以这个属性必须删除掉必须删除掉。
所以代码应该是这个样子的。当然2个变量mPrevButton,mNextButton记得要改成ImageButton类型,还有逻辑代码里面获取对象实例也要改成ImageButton。
本次修改修改了2个文件
代码如下:
http://git.oschina.net/canglin/GeoQuiz/commit/3ceadc8f6089801f187a697dfb03185c31c72612
本次挑战我获得了如下收获:
- 熟悉了给TextView、Button、ImageButton添加OnClickListener()
- LinearLayout用以布局。
- 新控件ImageButton,以及与Button之间的关系。