Android编程权威指南第三版挑战练习二


下载区


挑战练习二代码demo -> Link



挑战练习-题目1(2.7):为 TextView 添加监听器

NEXT按钮不错,但如果用户单击应用的 TextView 文字区域(地理知识问题),也可以跳转到下一道题,用户体验会更好。


参考解决方法:

只需要在mQuestionTextView对应绑定Id语句后面贴上这样一段代码

mQuestionTextView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
                updateQuestion();
            }
        });
解释:照葫芦画瓢,监听器里面放的就是Next_Buton监听器里面的内容,此题不难。

挑战练习-题目2(2.8):添加后退按钮

为GeoQuiz应用新增后退按钮(PREV),用户单击时,可以显示上一道测试题目。完成后的用户界面应如图2-14所示


step 1:加入字符串

strings.xml里,next_button后面加上

<string name="prev_button">Prev</string>

解释:添加字符串资源


step 2:更改布局文件

layout.xml文件原本nextbutton处,前后增加ButtonLinearLayout

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <Button
        android:id="@+id/prev_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/prev_button"
        android:drawableLeft="@drawable/arrow_left"
        android:drawablePadding="4dp" />
    <Button
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/next_button"
        android:drawableRight="@drawable/arrow_right"
        android:drawablePadding="4dp" />
    </LinearLayout>

解释:在布局文件中增加一个button,由于题目是水平布局,所以要加上LinearLayout标签,设置orientation=“horizontal”


 
 
 
 
step 3:增加功能
QuizActivity.java中声明变量
 
 
private Button mPrevButton;
Oncreate方法内,mNextButton.setOnListener方法后面,插入mPrevButton的相关用法
        mPrevButton = (Button) findViewById(R.id.prev_button);
        mPrevButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCurrentIndex = mCurrentIndex-1 < 0? mQuestionBank.length - 1 : mCurrentIndex - 1;
                updateQuestion();
            }
        });
解释:除了下面这句话,其他与NextButton无异。表达的意思就是如果mCurrentIndex下表减一小于0的时候,我就将这个mCurrentIndex设为最后一条,这样可以防止出现异常。

mCurrentIndex= mCurrentIndex-1< 0?mQuestionBank.length- 1: mCurrentIndex- 1;


挑战练习-题目1(2.7):从按钮到图标按钮

题目和答案在书上写的很详细了,在这里就不再赘述,不懂可以自行下载demo。

解释:android:contentDescription这个属性的主要功能就是为视力有障碍的人增加对控件的解释。可以参考->Link


最终效果图:


 
 

猜你喜欢

转载自blog.csdn.net/lo_heng/article/details/78471974