【问题标题】:Animating bitmap image in android在android中动画位图图像
【发布时间】:2014-07-22 00:24:17
【问题描述】:

我创建了一个圆形的位图图像,而不是因为我想对其进行动画处理,所以我将其转换为 bitmapdrawable,然后将其添加到动画 drawable 中。但由于这个原因,圆形变成了椭圆形。 .

那我该怎么办?

是否有任何其他方法可以仅对位图文件进行动画处理。 ?

提前谢谢..

【问题讨论】:

    标签: android animation bitmap geometry


    【解决方案1】:

    如果您使用的是 Canvas,我建议您持有一个指向当前位图的指针并将所有其他位图加载到一个数组中。

    说,

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

    请记住,画布对于游戏或任何实时内容来说都很慢!

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      不,您不能使用android animation framworkbitmap 本身设置动画。您可以直接为Views 或ViewGroups 以及从ViewViewGroup 派生的所有类设置动画。

      调用view 包含位图的ImageView

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

      应该将ImageView 从当前位置转换为100px

      【讨论】:

      • 那么我应该怎么做才能为我使用位图创建的圆圈设置动画??
      • 将位图放入视图中,并为视图本身设置动画。我将用一个例子编辑我的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多