好吧,伙计们,这可能听起来很愚蠢,但我已经用头撞键盘有一段时间了,试图找出为什么这不会刷新。基础知识:我有一个小示例应用程序,我正在测试它是否可以将图像围绕一个点旋转 X 度,并一次显示一个度以制作平滑的动画。所以我有一个很棒的示例,我发现它与滑块配合得很好,基本上将图像旋转设置为滑块上的一个点,太棒了!但是...当我尝试创建一个带有随机数的for循环并使用我的for变量沿每个角度更新图像...它什么都不做...而我得到的只是最后更新的图像...但是当我在滑块上拖动手指时,图形会在我旋转时立即更新...我不知道我在这里做错了什么...这是带有滑块的代码...我不知道我的作品没有创建随机数并绘制它,但本质上我是在单击按钮后完成的
本质上,如果你看这篇文章,我再次在按钮后面做了同样的事情,但它不是“实时”的。我调用 view.invalidate() 和 view.postinvalidate() 来尝试强制它,但没有成功...
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
curRotate = (float)progress;
drawMatrix();
}
private void drawMatrix(){
Matrix matrix = new Matrix();
matrix.postScale(curScale, curScale);
matrix.postRotate(curRotate);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bmpWidth, bmpHeight, matrix, true);
myImageView.setImageBitmap(resizedBitmap);
}
我认为你所做的是这样的:
for (int degrees = 0 ; degrees < maxRotation ; i++) {
// perform the rotation by matrix
myImageView.invalidate();
}
这是行不通的,因为invalidate()
仅在主线程事件队列中安排重绘。这意味着只有当当前代码全部执行完(在本例中为 for 循环)时才会执行重绘。
对于简单的旋转 a补间动画 http://developer.android.com/guide/topics/resources/animation-resource.html#Tween会更适合。对于更高级的东西(例如游戏动画),您可能需要创建自定义视图或使用SurfaceView
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)