android调用ondraw,android – 为什么onDraw()不断调用?

在自定义LinearLayoutOutlined类中,由于在onDraw()方法内设置了TextView的文字,导致UI需要重新布局和绘制,形成了无限循环。解决方案是避免在onDraw()中频繁执行会触发UI更新的操作,如setText()。同时,还应优化代码,减少不必要的对象创建,如SimpleDateFormat和Date对象。
摘要由CSDN通过智能技术生成

我有一个小应用程序,它使用自定义的LinearLayout,称为LinearlayoutOutlined.我想在其中绘制不同大小和彩色的盒子.它还有两个指示时间间隔的文本标签.在进行一些用户操作后,必须重新绘制布局.因此我按原样刷新布局

slotPanel.setDayBoundariesInMinutes( db, dw );

TimeSlot[] tSlots = nextDaysSlots.getGaps( dayOfWeek );

slotPanel.setItems( tSlots );

slotPanel.invalidate();

其中slotpanel是LinearLayoutOutlined实例.

我检测到onDraw方法被不断调用.在特定的循环次数之后,它不会停止调用.

这是整个LinearLayoutOutlined类:

包com.widgets;

public class LinearLayoutOutlined extends LinearLayout {

private int workingTimeBeginsInMinutes;

private int workingTimeFinishesInMinutes;

private TimeSlot[] items;

private Rect outline;

private Paint strokePaint = new Paint();

SimpleDateFormat formatter;

public LinearLayoutOutlined( Context context ) {

super( context );

setWillNotDraw( false );

}

public Linear

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值