Android SurfaceView non può funzionare
-
29-09-2019 - |
Domanda
è una domanda facile, ma non riesco a capirlo:
questo è il mio xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GG.My_pic.testA
android:id = "@+id/myview"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent"
/>
</FrameLayout>
In lander lunare, principali utilizzi filetto
// tell system to use the layout defined in our XML file
setContentView(R.layout.lunar_layout);
Ma non posso usare il mio
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Se cambio R.layout.main a -> nuova TESTA (questo), funziona
(Testa è la classe che estende SurfaceView implementa SurfaceHolder.Callback)
perché ??
Soluzione
ho scoperto perché, ma io non so perché.
Essendo una vera principiante sia in Java e Android, ho trascorso un tempo molto lungo per scoprirlo.
La chiave di questo problema è
class gameView estende SurfaceView attrezzi SurfaceHolder.Callback {
public gameView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
si può vedere, che questa è la base di SurfaceView, in ogni esercitazione
come
http://android-er.blogspot.com/2010/ 05 / android-surfaceview.html
http: //www.droidnova. com / giocare-con-grafica-in-android-parte-ii, 160.html
Ci sono 3 tipi di costruttore in SurfaceView:
SurfaceView(Context context)
SurfaceView(Context context, AttributeSet attrs)
SurfaceView(Context context, AttributeSet attrs, int defStyle)
ho passato una giornata con la prima:
SurfaceView(Context context)
e si tratta sempre di "forza chiudere".
, ma quando mi sono girato verso il secondo costruttore:
SurfaceView(Context context, AttributeSet attrs)
Funziona improvvisamente!
Questa è la soluzione.
Qualcuno mi può perché ??
dica