调用“ invalidate
”时,方法“ onDraw()”将被调用两次。
我想在onDraw()
中移动视图,这是我的代码
package com.blsm.sss.view;
public class MoveRelativeLayout extends RelativeLayout {
private int mDelta = 0;
public MoveRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MoveRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void move(int delta) {
mDelta = delta;
invalidate();
Logger.d("MoveRelativeLayout", "move() delta:" + mDelta);
}
@Override
protected void onDraw(Canvas canvas) {
Logger.d("MoveRelativeLayout", "onDraw() delta:" + mDelta);
super.onDraw(canvas);
canvas.translate(0, mDelta);
}
}
但是当我调用方法时,“move()
”onDraw
会被调用两次。我不知道为什么,有人可以帮助我吗?
答案 0 :(得分:0)
是否可能从UI线程以外的线程调用move()方法?如果是这样,我将首先使用postInvalidate(),看看你是否遇到同样的问题......
答案 1 :(得分:-1)
我认为你不需要调用super.onDraw();