Android-Zeichnung auf surfaceview und Leinwand
Habe ich ein "einfaches" problem. Ich versuche zu zeichnen, auf surfaceview. Layout-XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<SurfaceView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imagesurface"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="#00ff00">
</SurfaceView>
</LinearLayout>
Die Aktivität ist ein SurfaceHolder.Rückruf:
public class OpenCvonAndroidGTDforHOGActivity extends Activity implements SurfaceHolder.Callback{
private SurfaceHolder _surfaceHolder;
private SurfaceView _surfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
_surfaceView = (SurfaceView)findViewById(R.id.imagesurface);
_surfaceHolder = _surfaceView.getHolder();
_surfaceHolder.addCallback(this);
_surfaceView.setWillNotDraw(false);
}
protected void onDraw(Canvas canvas) {
canvas.drawRGB(255, 0, 255);
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
synchronized(holder) {
onDraw(canvas);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
public void showToast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
}
Wenn ich rufe,
_surfaceview.setBackground(Color.RED)
in onDraw(...) es funktioniert. Aber
canvas.drawRGB(255, 0, 255)
funktioniert nicht 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden Snippet wird Ihnen helfen.
Random random = new Random();
im voiddrawMyStuff(final Canvas canvas)
?)SurfaceView
besteht aus einemView
in Ihrem aktuellen Layouts und eine Oberfläche, die unter Ihrem layout. Wenn Sie einen hintergrund in der Ansicht, Sie werden nicht sehen, nichts von dem, was passiert auf der Oberfläche.Haben Sie versucht,