@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnGo:
imageDice.setImageDrawable(getResources().getDrawable(
R.drawable.anim_dice));
new Thread(new DiceThread()).start();
break;
default:
break;
}
}
}
public class DiceThread implements Runnable {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message messageDice = new Message();
messageDice.what = 1;
diceHandler.sendMessage(messageDice);
}
}
private void resetDiceImage() {
int randomInt = 1 + new Random().nextInt(6); // 1~6
Toast.makeText(MainActivity.this, getChineseByNumber(randomInt),
Toast.LENGTH_SHORT).show();
imageDice.setImageDrawable(getResources().getDrawable(
getResources().getIdentifier(“dice_” + randomInt, “drawable”,
getPackageName())));
}
private String getChineseByNumber(int number) {
switch (number) {
case 1:
return “一点小”;
case 2:
return “二点小”;
case 3:
return “三点小”;
case 4:
return “四点大”;
case 5:
return “五点大”;
case 6:
return “六点大”;
default:
return “”;
}
}
final Handler diceHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
resetDiceImage();
break;
default:
break;
}
}
尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:前往我的GitHub