关于invalidate() 不调用 onDraw方法的问题

阿弥陀佛陈大师 2014-01-17 08:51:27
android新手,遇到了个问题,invalidate() 不调用 onDraw方法的问题,麻烦各位帮忙看看。代码如下:
我打印Log发现:一切都正常,第一次运行是会打印 “2222”,但是重绘的是时候也会打印“1111”和“3333”,但是就不再打印“2222”了,说明运行到了invalidate() 方法,但是没有调用onDraw方法,为什么呢?
@Override
protected void onDraw(Canvas canvas) {
Log.i(TAG,"2222");
//生成用于绘制背景的画笔
Paint bgPaint = new Paint();
bgPaint.setColor(getResources().getColor(R.color.bgcolor));
canvas.drawRect(0, 0, getWidth(), getHeight(), bgPaint);
//深色线
Paint darkPaint = new Paint();
darkPaint.setColor(getResources().getColor(R.color.dark));
//浅色线
Paint lightPaint = new Paint();
lightPaint.setColor(getResources().getColor(R.color.light));
for(int i=0;i<9;i++){
if(i%3!=0){//绘制浅色线
//绘制横向线 第二条是为了实现立体效果 (凹槽)
canvas.drawLine(0, i*height, getWidth(), i*height, lightPaint);
canvas.drawLine(0, i*height+1, getWidth(), i*height+1, lightPaint);
//绘制纵向线
canvas.drawLine(i*width, 0, i*width, getHeight(), lightPaint);
canvas.drawLine(i*width+1, 0, i*width+1, getHeight(), lightPaint);
}
if(i%3==0){//绘制深色线
//绘制横向线 第二条是为了实现立体效果 (凹槽)
canvas.drawLine(0, i*height, getWidth(), i*height, darkPaint);
canvas.drawLine(0, i*height+1, getWidth(), i*height+1, darkPaint);
//绘制纵向线
canvas.drawLine(i*width, 0, i*width, getHeight(), darkPaint);
canvas.drawLine(i*width+1, 0, i*width+1, getHeight(), darkPaint);
}
}
//绘制数字
Paint numberPaint = new Paint();
numberPaint.setColor(Color.BLACK);
numberPaint.setStyle(Paint.Style.FILL);
numberPaint.setTextSize(height*0.75f);
numberPaint.setTextAlign(Paint.Align.CENTER);
FontMetrics fm = numberPaint.getFontMetrics();
float x = width/2;
float y = height/2-(fm.ascent+fm.descent)/2;

for(int i = 0;i<9;i++){//y轴
for(int j=0;j<9;j++){//x轴
canvas.drawText(game.getString(j, i), j*width+x, i*height+y, numberPaint);
}
}
super.onDraw(canvas);
}

public void setSelected(int i) {
if(game.setNewNumber(selectedx,selectedy,i)){
Log.i(TAG, "1111");
invalidate();//系统会自动调用 View的onDraw()方法重绘
Log.i(TAG, "3333");
}
}
...全文
551 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有没有人啊 困扰很久了
  • 打赏
  • 举报
回复
求解答

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧