我需要一个自定义图像视图,它首先在图像后面绘制一些形状,然后再使用应用于实际位图本身的相同“缩放”绘制图像本身。一切都很好,除了我有一个字母动画淡入自定义图像视图。它会淡出位图可绘制部分,但不会淡出我的形状。形状始终以完全不透明的方式绘制。我试着把我正在使用的颜料的alpha设置为视图的getalpha,但是没有成功。下面是自定义ImageView类中的onDraw函数:

@Override
protected void onDraw(Canvas canvas) {
    float[] f = new float[9];
    getImageMatrix().getValues(f);

    final float scaleX = f[Matrix.MSCALE_X];
    final float scaleY = f[Matrix.MSCALE_Y];

    final Drawable d = getDrawable();
    final int origW = d.getIntrinsicWidth();
    final int origH = d.getIntrinsicHeight();

    final int actW = Math.round(origW * scaleX);
    final int actH = Math.round(origH * scaleY);

    canvas.drawRect(Math.max((getWidth() - actW) / 2, 0) + 1, Math.max((getHeight() - actH) / 2, 0) + 1, Math.max((getWidth() - actW) / 2, 0) + actW - 1, Math.max((getHeight() - actH) / 2, 0) + actH - 1, paint);
    super.onDraw(canvas);
}

最佳答案

一个快速解决问题的方法是将自定义视图添加到某种视图容器中,然后只需设置容器的动画。

07-24 09:47
查看更多