我已经创建的位图图像,其是一个圆,不是作为我想制作动画,所以我转换成bitmapdrawable和比它加入到动画drawable..But由于此圆形状已经改变为椭圆形...
所以我该怎么做 ?
是否有任何其他方法来仅动画位图文件。 ?
提前致谢..
我已经创建的位图图像,其是一个圆,不是作为我想制作动画,所以我转换成bitmapdrawable和比它加入到动画drawable..But由于此圆形状已经改变为椭圆形...
所以我该怎么做 ?
是否有任何其他方法来仅动画位图文件。 ?
提前致谢..
不,你不能动画bitmap
本身与android animation framwork
。 您可以直接动画View
S或ViewGroup
S和所有从派生的类View
和ViewGroup
。
调用view
该ImageView
包含位图。
TranslateAnimation slide = new TranslateAnimation(view.getX(), view.getX() + 100, view.getY(), view.getY() + 100 );
slide.setDuration(1000);
view.startAnimation(slide)
应该翻译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);
请记住,画布上的游戏或任何实时慢!
希望能帮助到你。