我创建了一个位图图像,它是一个圆形,并且比我想要的更加动画,所以我将它转换为bitmapdrawable,并将其添加到动画绘制中。但是由于这个圆形已经改变以椭圆形...在android中动画位图图像
那么我该怎么办?
是否有任何其他方法只动画位图文件。 ?
在此先感谢..
我创建了一个位图图像,它是一个圆形,并且比我想要的更加动画,所以我将它转换为bitmapdrawable,并将其添加到动画绘制中。但是由于这个圆形已经改变以椭圆形...在android中动画位图图像
那么我该怎么办?
是否有任何其他方法只动画位图文件。 ?
在此先感谢..
不,你不能与android animation framwork
动画bitmap
本身。您可以直接动画View
或ViewGroup
和所有从View
和ViewGroup
派生的类。
请致电view
ImageView
包含位图。
TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX() + 100, view.getY(), view.getY() + 100);
slide.setDuration(1000);
view.startAnimation(slide)
应该如果你使用Canvas从当前位置
翻译ImageView
通过100px
,我建议持有指向当前的位图和加载所有其他位图到一个数组。
说,
Bitmap[] frames = new Bitmap[10] //10 frames
Bitmap frame[0] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram1);
Bitmap frame[1] = BitmapFactory.decodeResource(getResources(), R.drawable.circlefram2);
...
通过在你感兴趣的框架指向选择设置currentFrame。
Bitmap currentBitmap = frame[3]; // 4th frame
所以,当你调用drawBitmap(currentBitmap)它只会吸引你的框架感兴趣。您可以通过为帧动画分配fps来为每帧这么多帧更改位图。
如果您只是想缩放或旋转位图(旋转圆圈?),调整位图大小的最佳方法是使用createScaledBitmap,并使用矩阵进行旋转。
缩放,你的任何位图加载到内存中这样
Bitmap circleBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.circle);
如果你想圆(或位图)重新调整,你会做这样的事情:
Bitmap scaledCircle = Bitmap.createScaledBitmap(circleBitmap, dstWidth, dstHeight, filter);
凡dstWidth和dstHeight是目标目标宽度和高度,您可以通过缩放原始宽度和高度来计算。
int scaledHeight = circleBitmap.getHeight()/2;
int scaledWidth = circleBitmap.getWidth()/2;
最后,你通常会画出用帆布这样
canvas.drawBitmap(bitmap)
对于旋转该位图,创建一个矩阵
Matrix mat;
mat.postRotate(degrees); // Rotate the matrix
Bitmap rotatedBitmap = Bitmap.createBitmap(originalBitmap, x, y, width, height, mat, filter);
最后
canvas.drawBitmap(rotatedBitmap);
保持记住画布对于游戏或其他任何实时都很慢!
希望它有帮助。
那么我应该怎么做动画我创建使用位图的圆? – aagam94 2012-07-14 10:36:39
将位图放入视图中,并为视图本身设置动画。我将用一个例子编辑我的答案 – Blackbelt 2012-07-14 10:38:53