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

《Android编程权威指南》项目一 地理知识问题(文末送pdf)

2020-05-10 04:13 1276 查看

最近趁着春节假期,打算系统的再扫一遍androidd知识,学习《Android编程权威指南第三版》,前6章讲了一个项目,关于地理知识问题解答

效果如下

如果作弊了,会检测到

功能点

新知识点

  1. ShowAnswer按钮点击后会消失的动画代码如下
int cx = mShowAnswerButton.getWidth() / 2;
int cy = mShowAnswerButton.getHeight() / 2;
float radius = mShowAnswerButton.getWidth();
// 参数为  目标,中心X坐标,中心Y坐标,开始宽度,结束宽度
Animator animator = ViewAnimationUtils.createCircularReveal(mShowAnswerButton, cx, cy, radius, 0);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mShowAnswerButton.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
animator.start();
  1. 作弊能被检测到,方法是,在从QuizActivity界面点击cheat跳转到CheatActivity时,使用startIntentForResult()启动Intent,此时会携带一个请求码(这个请求码会自动返回到QuizActivity),然后在CheatActivity中,如果点击了ShowAnswer按钮,就修改请求码即可,然后返回到QuizActivity处理

在QuizActivity中跳转

startActivityForResult(intent,REQUEST_CODE_CHEAT);

在CheatActivity中设置

mShowAnswerButton.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) //动画在LOLLIPOP版本后才加入
@Override
public void onClick(View v) {
if (mAnswerIsTrue) {
mAnswerTextView.setText(R.string.true_button);
}
else {
mAnswerTextView.setText(R.string.false_button);
}
setAnswerShownResult(true);
...
private void setAnswerShownResult(boolean isAnswerShown) {
Intent data = new Intent();
data.putExtra(EXTRA_ANSWER_SHOWN, isAnswerShown);
setResult(RESULT_OK,data);
}

然后被set过的data返回到QuizActivity中,进行检测

//当startForResult带回的数据含有RESULT_OK和data有数据时,判定为cheat
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) {
return;
}
//判定是否进入的Cheat界面
if (requestCode == REQUEST_CODE_CHEAT) {
//判定是否点击了ShowAnswer按钮
if (data == null) {
return;
}
mIsCheater = CheatActivity.wasAnswerShown(data);
}
}

mIsCheater 即为是否作弊的标识 ,这里的wasAnswerShown在CheatActivity中,是一个静态方法

public static boolean wasAnswerShown(Intent result) {
return result.getBooleanExtra(EXTRA_ANSWER_SHOWN, false);
}

除此之外,代码中还有解决横屏的问题等,书中也有其他要求,比如设置一个自定义的Toast,最多作弊三次等等,不过这些都过于简单,就没有再实现了

如何调试,如何查看内存,如何适配版本等也在前6章有所介绍,和《第一行代码》比起来,这本书可能不适合纯小白,但是如果你有一点基础,那么看这本书一定让你收获颇丰!!

关注公众号 【小松的读书与成长】,回复“ 权威指南” 即可获得pdf

ps:不想关注也行,毕竟我也是从网上搜到的

链接:https://pan.baidu.com/s/1fV83_CgbSfmHXsNwOx011w
提取码:j45a

小松与蘑菇 原创文章 126获赞 414访问量 12万+ 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐