gpt4 book ai didi

android - 调用 'onDraw()'时方法 'invalidate'会被调用两次

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:39 24 4
gpt4 key购买 nike

当调用“invalidate”时,方法“onDraw()”将被调用两次。我想在 onDraw() 中向上移动 View ,这是我的代码

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 将被调用两次。我不知道为什么,有人可以帮助我吗?

最佳答案

是否有可能从 UI 线程以外的线程调用 move() 方法?如果是这样,我将从使用 postInvalidate() 开始,看看您是否遇到同样的问题...

关于android - 调用 'onDraw()'时方法 'invalidate'会被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11322269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com