Переход от SurfaceView не в основное занятие
У меня есть упражнение, которое использует surfaceview в качестве своего представления контента для рисования некоторых растровых изображений и выполнения анимации, что является лучшим способом управления запуском нового раунда события для загрузки нового набора растровых изображений для следующего раунда в этом потоке surfaceview или что является лучшим способом переключения с потока surfaceview, обратно к основной игровой деятельности после завершения раунда. То, что я пробовал до сих пор, ниже фрагмент из класса surfaceview, где все нарисовано.
if(isCollided(i)){
if(imgList.indexOf(imgList.get(i)) == 0){
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(context, "Correct!", Toast.LENGTH_SHORT).show();
Intent i = new Intent(context, AnimeAction.class);
context.startActivity(i);
}});
}
1 ответ:
Вы не должны этого делать:
MainActivity activity = new MainActivity();
Вместо этого попробуйте это :
MainActivity activity = MainActivity.this;
Что касается размещения нового набора растровых изображений, я сделал это так в своем приложении:public class OurView extends SurfaceView implements Runnable { Thread t=null; SurfaceHolder holder; boolean ok; public OurView(Context context) { super(context); holder=getHolder(); } public void run() { //draw the bitmaps } public void pause() { ok=false; Log.v("pause()", "ok=false"); while(true) { try{ t.join(); } catch(InterruptedException e) { Log.v("pause()",e.toString()); } break; } t=null; } public void resume() { ok=true; if(t==null) { t=new Thread(this); t.start(); Log.v("resume()", "new thread started"); } else { Log.v("resume()", "new thread not started as t!=null"); } } }
И в деятельности
onResume()
иonCreate()
:@Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.v("onPause()", "super.onPause()"); v.pause(); //V IS AN OBJECT OF THE CLASS OurView } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.v("onResume()", "super.onResume()"); v.resume(); }
Я узнал это из этого видео (и последующего 1.28 -1.33) - http://youtube.com/watch?v=Z2YogvILjvo