在Custom ImageView Android中改变ImageResource

时间:2016-01-25 13:16:09

标签: java android imageview

我整天都在处理这个错误,无法解决。我有一个自定义ImageView,如下所示:

public class UserDirectionView extends ImageView {

private float mDirection;
private Drawable arrow;
private boolean mCorrectPosition;

// constructors...

@Override
protected void onDraw(Canvas canvas) {
    if (arrow == null) {
        arrow = getDrawable();
        arrow.setBounds(0, 0, getWidth(), getHeight());
        // setImageResource(resId); // Not working
    }

    canvas.save();
    canvas.rotate(mDirection, getWidth() / 2, getHeight() / 2);
    arrow.draw(canvas);
    canvas.restore();
}

public void updateDirection(float direction, boolean correctPos) {
    mDirection = direction;
    mCorrectPosition = correctPos;
    invalidate();
}
}

我正在尝试使用setImageResource(resId)更改imageResource,但一切都没有发生。我试图在onDraw内部以及我的课堂外调用该方法,如下所示:

UserDirectionView mUserHint =  findview....;
mUserHint.setImageResource(resId);

但图像没有变化。

我也尝试拨打invalidate,但没有工作。

如何以动态方式更改图像资源?

1 个答案:

答案 0 :(得分:2)

您错过了super.onDraw(canvas)调用,该调用负责更新drawable。添加

onDraw

std::experimental::filesystem