2013-04-08 106 views
1

我想編寫一個程序,因爲這個屏幕上的移動球,我看了很多教程,我不能明白這一行:瞭解SurfaceHolder概念

mHolder = getHolder(); 
mHolder.addCallback(this); 

是什麼addCallback法「this」參數?爲什麼我使用這種方法? 我讀了SurfaceViewSurfaceHolderCanvas,但我不能很好地理解SurfaceHolder。它有什麼作用?

我知道也許我的問題很愚蠢,但這是一個問題!請解釋一下這個概念。

回答

3

「this」是一個基本的Java/OO概念......在這裏它指的是調用mHolder.addCallback()的對象。在你的類聲明中,你會在頂部看到它「實現了SurfaceHolder.Callback」。

由於類實現SurfaceHolder.Callback,它IS SurfaceHolder.Callback的一個實例,因此,它可以傳遞到自身的引用(「這」)到需要SurfaceHolder.Callback參數的功能。

至於SurfaceHolder的「概念」,它只是應用程序代碼與Surface進行交互的接口。它用於SurfaceView.java ...查找私有的SurfaceHolder mSurfaceHolder聲明。

這是100%的推測,但我想象SurfaceHolder是這樣分離出來的,因爲設計者設想了其他類型的SurfaceViews,並希望應用程序代碼與它們進行交互的標準方式。

+0

感謝您的回覆,但我不明白getHoder()方法。它是做什麼的這種方法? – 2013-04-08 15:26:29

+0

SurfaceView.getHolder()返回用於與Surface交互的SurfaceHolder接口。我不知道如何解釋,或者解釋得如何更好。也許仔細看看SurfaceView.java和SurfaceHolder.java會讓它更清晰。 – 2013-04-08 19:30:10