当前位置: 首页 > 知识库问答 >
问题:

带BitmapRegionDecoder的Android sprite动画

尉迟景福
2023-03-14
   @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    try {
        if (isInited && region != null) canvas.drawBitmap(region, 0, 0, paint);
    } catch (Throwable t) {
        Timber.w(t, null);
    }
}

class AnimatePlaceholderRunnable implements Runnable {
    @Override
    public void run() {
        try {
            if (Build.VERSION.SDK_INT < 10) return;
            if (!isAnimating) return;
            if ((top + height + empty) <= maxTop) top = top + height + empty;
            else
                top = 0;
            bottom = top + height;
            src = new Rect(left, top, right, bottom);
            region = decoder.decodeRegion(src, null);
            invalidate();
            postDelayed(placeholderRunnable, 41);
        } catch (Throwable t) {
            Timber.w(t, null);
        }
    }
}

共有1个答案

乐正浩言
2023-03-14

我曾经有过类似的问题。问题是我使用的库没有捆绑64位arm代码。Android有一个错误,它假设如果一个库捆绑了64位原生代码,那么它假设所有使用原生代码的库都有64位代码。我相信Galaxy S7是一款64位的手机。检查一下你爆炸的apk,看看是不是这样。

您可以使用Java代码加载整个sprint并从中裁剪区域。您可以在本文中找到如何做到这一点的答案。Android Devs,让你的工具栏和视图背景变得冰霜

简言之:

Matrix matrix = new Matrix();
//half the size of the cropped bitmap
//to increase performance, it will also
//increase the blur effect.
matrix.setScale(0.5f, 0.5f);
Bitmap bitmap = Bitmap.createBitmap(spriteBitmap,
    (int) targetView.getX(), //start x
    (int) targetView.getY(), //start y
    targetView.getMeasuredWidth(), //end x
    targetView.getMeasureHeight(), //end y
    matrix,
    true);
 类似资料:
  • 我有一个玩家类,是一个马里奥角色。当我向左走时,我调用一个方法来启动左动画并设置速度。 现在我的问题是:如何为玩家制作碰撞矩形?这是我的矩形:

  • 问题内容: 我正在阅读一个关于SO的不同问题的答案,一个人可以(如果我的说法不正确,请更正我)将端口代码从更高版本的android移植到早期版本。具体来说,我对将BitmapRegionDecoder的代码从Android版本2.3.3(Gingerbread)反向移植到版本2.2.2(Froyo)感兴趣。 我宁愿更普遍地问这个问题,因为什么是最佳实践/将代码从较新版本的Android反向移植到较

  • 2)如果困境是真的,为什么事情要这样设置?谷歌计划反对TabHost和基于标签的多活动方法吗?多活动方法有什么不愉快的地方吗? 3)如果继续支持这两种方法,它们的优缺点是什么?如果我使用ActionBar+片段,我会遇到任何困难吗?例如,当我想让我的一个选项卡屏幕滑过/弹出一个额外的屏幕/片段时,我会不会在ActionBar中切换到/从选项卡中切换到选项卡?

  • 问题内容: 真的没有办法使用CSS为渐变背景设置动画吗? 就像是: 我知道,对于Safari 5.1+和Chrome 10+,有一个新的渐变语法,但是现在,对于该项目,我必须坚持使用旧的语法。 问题答案: Webkit渐变尚不支持过渡。它已在规格中,但尚无法使用。 (ps,如果您仅执行颜色转换-您可能要签出-webkit-filters-可以进行动画处理!) 更新:渐变过渡显然可以在IE10 +中

  • 问题内容: 我正在宽度不相等的画布上绘制图形。每个画布是否都有自己的滚动条?我试图将所有画布放在一个div中,并指定最大宽度,但这没有用。是否可以将所有画布在页面上的可见宽度说成500像素,并且每个画布都有其滚动条以查看画布的整个宽度。 谢谢。 问题答案: 指定画布的总宽度,然后将其包裹在div中。将div设置为,并指定500px的宽度。然后,您应该具有滚动条,使您可以滚动并查看画布的隐藏部分。对

  • 首选框架是Spring Web Service,但也欢迎其他解决方案。 问候,