动画android系统中的位图图像(Animating bitmap image in androi

2019-07-30 10:17发布

我已经创建的位图图像,其是一个圆,不是作为我想制作动画,所以我转换成bitmapdrawable和比它加入到动画drawable..But由于此圆形状已经改变为椭圆形...

所以我该怎么做 ?

是否有任何其他方法来仅动画位图文件。 ?

提前致谢..

Answer 1:

不,你不能动画bitmap本身与android animation framwork 。 您可以直接动画View S或ViewGroup S和所有从派生的类ViewViewGroup

调用viewImageView包含位图。

TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX()  + 100, view.getY(), view.getY()  + 100 );   
slide.setDuration(1000);
view.startAnimation(slide) 

应该翻译ImageView100px从当前位置



Answer 2:

如果您使用画布,我建议持有指向当前的位图和加载所有其他位图到一个数组。

说,

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);

请记住,画布上的游戏或任何实时慢!

希望能帮助到你。



文章来源: Animating bitmap image in android