Android 如何判断一个View重绘或加载完成?
3 回答
![?](http://img1.sycdn.imooc.com/533e4d660001312002000200-100-100.jpg)
慕妹3146593
TA贡献1820条经验 获得超9个赞
可以设置这个回调函数
12345678 | //view重绘时回调 view.getViewTreeObserver().addOnDrawListener( new OnDrawListener() { @Override public void onDraw() { // TODO Auto-generated method stub } }); |
12345678 | //view加载完成时回调 view.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO Auto-generated method stub } }); |
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
扬帆大鱼
TA贡献1799条经验 获得超9个赞
两种方式刷新:
主线程可以直接调用Invalidate()方法刷新
子线程可以直接调用postInvalidate()方法刷新。
API的描述是这样的 : Invalidatethe whole view. If the view is visible, onDraw(Canvas) will be called at somepoint in the future. This must be called from a UI thread. To call from anon-UI thread, call postInvalidate().。当Invalidate()被调用的时候,View的OnDraw()就会被调用,Invalidate()必须是在UI线程中被调用,如果在新线程中更新视图的就调用postInvalidate()。
![?](http://img1.sycdn.imooc.com/54586870000183e302200220-100-100.jpg)
慕妹3242003
TA贡献1824条经验 获得超6个赞
修改颜色后调用invalidate()
在自定义View 中提供一个方法
public void setRectColor(int color){
colors[x][x] = color; //修改颜色
invalidate();
}
添加回答
举报
0/150
提交
取消