Android-淡出画布上的位图图像

拉吉

我正在画布上绘制缩放的位图,并希望在指定的时间淡出我的图像。

基本上,当我的角色图像越过画布的特​​定部分时,我要求角色图像在页面自动重定向到下一个Java类之前,逐渐消失(3秒)。

当前,我的图像只是重定向到新的java类,请在下面的代码中查看我如何创建图像。

Resources res = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, res.getDisplayMetrics());
imgSpacing = (int) px / 2;
int size = (int) ((PhoneWidth / 5) - px);

chrImg = BitmapFactory.decodeResource(getResources(), R.drawable.character);
chrImg = Bitmap.createScaledBitmap(chrImg, size, size, true);

然后在画布上的onDraw中:

if(indexX == mazeFinishX && indexY == mazeFinishY)
{
    canvas.drawBitmap(finish, j * totalCellWidth, i * totalCellHeight, null);
    // As soon as the character moves over this square they are automatically re-directed to new page
    // This is where I want to fade the character image out before the re-direct
}

我在网上看过,但是还不能完全弄清楚如何使从游戏资源drawable文件夹中提取的我的可绘制图像起作用。谢谢

丹·怀特(Dane White)

如果您认为有可能要更改渐变动画(例如缩放和/或旋转),那么应该使用动画XML。

但是,对于快速的位图淡入淡出,您可以重复发布延迟的无效消息。您可能希望将无效区域限制为字符位图所在的位置:

private static final int FADE_MILLISECONDS = 3000; // 3 second fade effect
private static final int FADE_STEP = 120;          // 120ms refresh

// Calculate our alpha step from our fade parameters
private static final int ALPHA_STEP = 255 / (FADE_MILLISECONDS / FADE_STEP);

// Initializes the alpha to 255
private Paint alphaPaint = new Paint();

// Need to keep track of the current alpha value
private int currentAlpha = 255;

@Override
protected void onDraw(Canvas canvas) {
    ...
    if(indexX == mazeFinishX && indexY == mazeFinishY) {

        // Drawing your wormhole?
        int x = j * totalCellWidth;
        int y = i * totalCellHeight;
        canvas.drawBitmap(finish, x, y, null);

        if (currentAlpha > 0) {

           // Draw your character at the current alpha value
           canvas.drawBitmap(chrImg, x, y, alphaPaint);

           // Update your alpha by a step
           alphaPaint.setAlpha(currentAlpha);
           currentAlpha -= ALPHA_STEP;

           // Assuming you hold on to the size from your createScaledBitmap call
           postInvalidateDelayed(FADE_STEP, x, y, x + size, y + size);

        } else {
           // No character draw, just reset your alpha paint
           currentAlpha = 255;
           alphaPaint.setAlpha(currentAlpha);

           // Now do your redirect
        }
    }
    ...
}

我建议将常量FADE_MILLISECONDS和FADE_STEP放入res / integers.xml中,以免对其进行硬编码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Xamarin.Android 画布上绘制位图

来自分类Dev

画布上的Android Mask位图生成黑色空间

来自分类Dev

来自外部文件的画布上的Android位图

来自分类Dev

画布上的Android Mask位图生成黑色空间

来自分类Dev

为什么在Android画布上绘图不会修改我的位图?

来自分类Dev

Android图像缓存的位图

来自分类Dev

Android图像缓存的位图

来自分类Dev

Android画布。在基于Touch的圆形路径上移动和旋转位图?

来自分类Dev

Android-关闭使用位图和矩阵在画布上绘制的平滑度

来自分类Dev

如何在画布上旋转位图而不在Android上使其变形

来自分类Dev

在Android / Java中使用画布在图像上绘制

来自分类Dev

从URL下载图像并将其绘制在画布上-Android

来自分类Dev

画布以黑色显示位图的透明部分-Android

来自分类Dev

Android图形-拖动位图时清除画布

来自分类Dev

绘制位图时Android的画布行为变慢

来自分类Dev

Android从位图中剪辑图像

来自分类Dev

Android临时保存位图图像

来自分类Dev

Android临时保存位图图像

来自分类Dev

Android从位图中剪辑图像

来自分类Dev

android中的位图图像问题

来自分类Dev

Android在画布上绘图

来自分类Dev

Android在画布上绘图

来自分类Dev

Android上的累积画布

来自分类Dev

在Android上转换原始位图

来自分类Dev

在Android上从Parse读取位图

来自分类Dev

在Android上加快位图绘图

来自分类Dev

在Android NDK上通过JNI从OpenGL ES Framebuffer创建位图图像

来自分类Dev

转换Android Base64位图并在HTML Base64图像上显示

来自分类Dev

Android图像淡入淡出动画