反向控制-Inversion of Control(Android Application)

来源:互联网 发布:java连接oracle数据库 编辑:程序博客网 时间:2024/06/04 19:36

Android_1.0_eBook_by_tom_kao_2008_10_15.pdf《Android应用框架原理与程序设计36技》本書完整範例程式碼請到網站下載:www.misoo1.com 或 tom-kao.blogspot.com高煥堂 著(2008 年10 月第三版)misoo.tw@gmail.com

 

 // Android 程式
public class MyView extends View {
private Paint paint;
public MyView(Context context) {
super(context);
private Paint paint= new Paint();
}
public void ReDraw() { this.invalidate(); }
@Override
protected void onDraw(Canvas canvas) { // 畫長方形
paint.setAntiAlias(true);
paint.setColor(Color.YELLOW);
canvas.clipRect(30, 30, 100, 100);
}}
程式執行到ReDraw()函數時,就正向呼叫到Android 框架裡的invalidate()函
數了。接著,Android 框架會反過來呼叫MyView 子類別的onDraw()函數。這就
是「反向溝通」了。如果你沒有定義onDraw()函數的話,會執行View 父類別預
設的onDraw()函數,而依據框架預設之慣例而行了。     

//this.invalidate(); 的实现中肯定包含onDraw()的调用