这个问题花了我一个下午才解决,找了很多方法,但是都没用。希望各位可以早点看到这个解答!!!
1.在重写View的时候有没有加上setWillNotDraw(false)
this.setWillNotDraw(false);
public class PeopleView extends View {
public float bitmapX;
public float bitmapY;
public PeopleView(Context context) {
super(context);
this.setWillNotDraw(false);//看看这个有没有
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint paint = new Paint();
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.person22);
canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
canvas.scale(0.1f,0.1f);
if(bitmap.isRecycled()){
bitmap.recycle();
}
}
如果加上了,还不能解决问题,那么试一试下面的方法。
2.看看你的调用函数是不是invalidata().
如果是的,将其更改为postValidata().
postValidata().
更改后能够成功调用onDraw,那么恭喜啦,
因为我是在Timer里执行View的方法,而之前的代码是使用Handler执行View方法。
原理在这里:https://blog.csdn.net/mountain_hua/article/details/81293030