java – 在循环中更改图像 – Android
发布时间:2020-12-15 05:00:04 所属栏目:Java 来源:网络整理
导读:我想知道为什么我仍然无法想办法做到这一点.虽然看起来很简单,但我花了整整一天的时间.但不能这样做. 我有一组骰子图像. 1.png,2.png,….和6.png. 我的布局中有一个ImageView.那是, ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne
我想知道为什么我仍然无法想办法做到这一点.虽然看起来很简单,但我花了整整一天的时间.但不能这样做.
我有一组骰子图像. 1.png,2.png,….和6.png. ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne); 在这里,我想快速更改此imageView以查看使用上述6个图像的某种视觉/动画.为此我写下了一段代码. 代码1: for (int j=0;j<10;j++){ int randomNum = random.nextInt(6); System.out.println("Random Value " + randomNum); dice.setImageResource(images[randomNum]); } 输出: 没有视觉效果. imageView保持不变,并在循环最后一次迭代时突然改变. 代码2: for (int j=0;j<10;j++){ int randomNum = random.nextInt(6); System.out.println("Random Value " + randomNum); dice.setImageResource(images[randomNum]); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 输出: 再一次没有视觉效果. imageView保持不变,并在循环最后一次迭代时突然改变. 代码3: final Handler localHandler = new Handler(); Runnable runnableObject = new Runnable() { public void run() { final ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne); int randomNum = random.nextInt(6); System.out.println("Random Value" + randomNum); dice.setImageResource(images[randomNum]); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; for (int j=0;j<10;j++){ localHandler.postDelayed(runnableObject,1000); } 再一次没有视觉效果. imageView保持不变,并在循环最后一次迭代时突然改变.在所有三种情况下,logcat都没有任何错误. 我发现线程也不能解决问题. 解决方法
首先,android中已经有一个动画集,它可以帮助你在调用
FrameAnimation之后获得你想要的东西,下面是一个如何使用它的例子:
FrameAnimation Example 你的第一,第二和第三个代码在主线程中运行,你不应该在主线程中使用sleep! 如果您仍想手动设置图像资源,可以使用以下代码: final Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { int randomNum = random.nextInt(6); dice.setImageResource(images[randomNum]); handler.postDelayed(this,500); } },500); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |