目標:修改前篇的專案,以按鈕來操作足球的左右。
首先回顧前篇:
1. 在Activity利用setContentView(olaview)的方式將SurfaceView呈現於畫面上。
2. 因為利用上述方法,並不需要在main.xml做任何設定。
3. SurfaceView建構式傳入Context,以識別在何Activity繪圖。
4. 執行setContentView(olaview)就會觸發surfaceCreated事件,直接以此事件觸發繪圖函式。
此篇更改:
1. 改為setContentView(R.layout.main)將SurfaceView呈現於畫面上,並且一併呈現需要的Button。
2. 因為改為設定main.xml為顯示畫面,必須在xml中設定引用的SurfaceView。
<ola.OlaTeach_game1.OlaView
android:id="@+id/olaview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
3. SurfaceView建構式除需傳入Context外,還需傳入AttributeSet,用以傳接該SurfaceView於main.xml的設定內容。
4. 執行setContentView(R.layout.main)後,一樣會觸發surfaceCreated事件。
總結,如果希望SurfaceView像是圖片一樣放在Activity上面,並且可以利用例如Button等元件來控制繪圖結果,必須:
**製作一個含有接收Context與AttributeSet建構式的SurfaceView。
public class OlaView extends SurfaceView implements SurfaceHolder.Callback {
public OlaView(Context context, AttributeSet attrs)
{
super(context,attrs);
//建立相關需要的物件
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
}
}
附上一個小成果圖(左右鍵可以控制足球的左右)
你好~有完整專案可以分享嗎??
回覆刪除這個要找耶,去年的了,我不確定還在不在。
回覆刪除你好,謝謝大大的無私分享。我是個新手,想請教一下,我寫了
回覆刪除public OlaView(Context context, AttributeSet attrs)
{
super(context,attrs);
接著要如何利用AttributeSet來設定Button呢?可不可以請大大提示,謝謝。