Ich hab hier mal ein Beispiel aus dem Internet implementiert. Leider stürtt die Anwendung beim Start sofort wieder ab.
Ich hab es auch schon etwas ähnlich hinbekommen, dass nur der Canvas da war, doch das ist nciht ganz richtig gewesen.
Ich hab den Ablauf hier einfach noch nicht geschnallt?
Wie hättet Ihr das gemacht?
1package de.robotcontrol.debegr;
2
3import android.app.Activity;
4import android.content.Context;
5import android.graphics.Bitmap;
6import android.graphics.BitmapFactory;
7import android.graphics.Canvas;
8import android.graphics.Typeface;
9import android.os.Bundle;
10import android.view.MotionEvent;
11import android.view.SurfaceHolder;
12import android.view.SurfaceView;
13import android.view.View;
14import android.view.View.OnClickListener;
15import android.view.View.OnTouchListener;
16import android.view.Window;
17import android.view.WindowManager;
18import android.view.WindowManager.LayoutParams;
19import android.widget.Button;
20import android.widget.FrameLayout;
21import android.widget.LinearLayout;
22import android.widget.SlidingDrawer;
23import android.widget.TextView;
24
25public class Playground extends Activity implements OnTouchListener, OnClickListener{
26
27 PlaygroundSurface ourSurfaceView;
28 Typeface sevenSegFont;
29 TextView tvSlidingDrawer;
30 Button bGrenade,bSmokeGrenade;
31 SlidingDrawer sdHandle;
32 TextView tvX,tvY;
33 Bitmap bitmapJoyGround,bitmapJoyButton;
34 float curX,curY;
35 String sBuffer;
36 FrameLayout layout;
37
38
39 @Override
40 protected void onCreate(Bundle savedInstanceState) {
41 // TODO Auto-generated method stub
42 super.onCreate(savedInstanceState);
43 //requestWindowFeature(Window.FEATURE_NO_TITLE);
44 //setContentView(R.layout.playground);
45
46 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
47
48
49 ourSurfaceView = new PlaygroundSurface(this);
50 ourSurfaceView.setOnTouchListener(this);
51
52 layout = (FrameLayout) findViewById(R.id.lFrameLayout);
53 ourSurfaceView = new PlaygroundSurface(this);
54 layout.addView(ourSurfaceView);
55 setContentView(layout);
56
57 curX = curY = 0;
58
59 // Handle for the TExt in the SlidingDrawer
60 tvSlidingDrawer = (TextView) findViewById(R.id.sdHandle);
61
62 // TextViews
63 tvX = (TextView) findViewById(R.id.tvX);
64 tvY = (TextView) findViewById(R.id.tvY);
65
66 // Creates the 7-Segment font handle
67 sevenSegFont = Typeface.createFromAsset(this.getAssets(), "7 Segment.ttf");
68 //tvSlidingDrawer.setText("12:00");
69
70 // Handle for the Bitmaps
71 bitmapJoyButton = BitmapFactory.decodeResource(getResources(), R.drawable.joy_button);
72 bitmapJoyGround = BitmapFactory.decodeResource(getResources(), R.drawable.joy_ground);
73 }
74
75
76
77 @Override
78 protected void onPause() {
79 // TODO Auto-generated method stub
80 super.onPause();
81 ourSurfaceView.pause();
82 }
83
84
85 @Override
86 protected void onResume() {
87 // TODO Auto-generated method stub
88 super.onResume();
89 ourSurfaceView.resume();
90 }
91
92
93 @Override
94 public boolean onTouch(View arg0, MotionEvent arg1) {
95 // TODO Auto-generated method stub
96
97 try {
98 Thread.sleep(50);
99 } catch (InterruptedException e) {
100 // TODO Auto-generated catch block
101 e.printStackTrace();
102 }
103
104 try {
105 Thread.sleep(50);
106 } catch (InterruptedException e) {
107 // TODO Auto-generated catch block
108 e.printStackTrace();
109 }
110
111 curX = arg0.getX();
112 curY = arg0.getY();
113
114 tvX.setText(""+curX);
115 tvY.setText(""+curY);
116
117 return true;
118 }
119
120 @Override
121 public void onClick(View arg0) {
122 // TODO Auto-generated method stub
123
124 }
125
126
127 public class PlaygroundSurface extends SurfaceView implements Runnable {
128
129 SurfaceHolder surfaceHolder;
130 boolean isRunning = true;
131 Thread ourThread = null;
132
133
134 public PlaygroundSurface(Context context) {
135 super(context);
136 surfaceHolder = getHolder();
137 }
138
139 public void pause(){
140 isRunning = false;
141 while(true){
142 try {
143 ourThread.join();
144 } catch (InterruptedException e) {
145 // TODO Auto-generated catch block
146 e.printStackTrace();
147 }
148 break;
149 }
150 ourThread = null;
151 }
152
153 public void resume(){
154 isRunning = true;
155 ourThread = new Thread(this);
156 ourThread.start();
157 }
158
159 @Override
160 public void run() {
161 // TODO Auto-generated method stub
162 while(isRunning){
163 if(!surfaceHolder.getSurface().isValid())
164 continue;
165
166 Canvas canvas = surfaceHolder.lockCanvas();
167
168 canvas.drawBitmap(bitmapJoyGround, 0, 450, null);
169 canvas.drawBitmap(bitmapJoyGround, 700, 450, null);
170
171 surfaceHolder.unlockCanvasAndPost(canvas);
172 }
173 }
174 }
175
176}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.