第二章 MVC设计模式
无关技术
努力是一种态度,与年纪无关.
知识概要
本章主要讲解了android中的MVC的基本模型,model,view,Controller代表的角色,以及使用MVC的好处,向项目中添加图片以及资源的使用.
挑战练习
为TextView添加监听器
textview也是View的子类,他也有View.OnClickListener,所以它的点击逻辑跟Button的一模一样.
只需要添加
`
mQuestionTextView = findViewById(R.id.question_test_view);
mQuestionTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
}
});
`
即可实现,点击TextView就显示下一道题.
添加后退按钮
这道题与下一道题逻辑是一样的.不同之处在于本题的按钮,需要显示文字和图标,点击逻辑是一样的.
所以在布局中使用Button
`
<Button
android:id="@+id/next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="4dp"
android:drawableRight="@drawable/arrow_right"
android:text="@string/next_button"/>
`
图片在文字的右边,就是用drawableRight,他们之间的距离调节使用drawablePadding
在图片在文字的左边,就使用drawableLeft,文字与图片的间距用drawablePadding
同理,可以设置文字与图片上下的位置关系.
从按钮到图标
按照提示,这个只有图标,使用ImageButton,ImageButton是继承自ImageView的,而Button是继承自TextView的,所以ImageButton不可以设置文字,只用于显示图标.
在布局中添加
`
<ImageButton
android:id="@+id/pre_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/pre_button"
android:src="@drawable/arrow_left"/>
`
注意到这里的contentDescription属性,我们平时用不到,这个是给视力障碍用户提供方便的属性.
上一道题的逻辑处理
`
mPreButton = findViewById(R.id.pre_button);
mPreButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex--;
if (mCurrentIndex<0){
mCurrentIndex = 0;
Toast.makeText(QuizActivity.this, R.string.first_question, Toast.LENGTH_SHORT).show();
}
updateQuestion();
}
});
`
初始化控件,设置点击监听,索引自减,如果当前索引值<0了,就把它置为0,并提醒用户,已经到第一道题了,然后调用updateQuestion,去刷新题.