Die Einstellung der Größe einer SurfaceView mit SurfaceHolder.setFixedSize(Breite,Höhe)

Als Teil meiner MainActivity-Klassen-layout habe ich ein SurfaceView:

                <LinearLayout
                android:id="@+id/screen_game"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#0000FF"
                android:orientation="vertical"

                >
                           <Button
                        android:id="@+id/button15"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Button" />

                           <com.ecslayout.BackgammonBoardView
                               android:id="@+id/backgammonBoardView1"
                               android:layout_width="100dp"
                               android:layout_height="100dp" />



                </LinearLayout>

Ich habe für meine SurfaceView ein Skelett Klasse (die ich ausgelassen habe, viel code, der Einfachheit halber). Innerhalb surfaceCreated bin ich versucht viele verschiedene Möglichkeiten
stellen Sie die Größe der Leinwand. Der canvas-Bereich nicht angezeigt werden ändern der Größe von 100dp x 100dp. Alle meine versuche Sie zu rufen setFixedSize zu haben scheinen keine Wirkung auf die Größe an alle:

            public class BackgammonBoardView extends SurfaceView implements SurfaceHolder.Callback {


                public BackgammonBoardView(Context context, AttributeSet attrs) {
                    super(context, attrs);

                    Log.d(TAG,"SurfaceView Constructor.");

                    //register out interest in hearing about changes to our surface
                    SurfaceHolder holder = getHolder();
                    holder.addCallback(this);

                }


                //The method is firing just fine. I have the surfaceCreated output from Log.d
                @Override
                public void surfaceCreated(SurfaceHolder arg0) {

                    //Has no effect on size
                    //this.getHolder().setFixedSize(500, 500);

                    //Has no effect on size
                    //arg0.setFixedSize(500, 500);

                    //Has no effect on size
                    //SurfaceHolder holder = getHolder();
                    //holder.setFixedSize(500, 500);

                    //Has no effect on size
                    /*getHolder().setFixedSize(500,
                            500);*/

                    //Causes Eclipse to enter Debug mode. It crashes the program
                    //android.widget.FrameLayout.LayoutParams params = new android.widget.FrameLayout.LayoutParams(500, 500);
                    //setLayoutParams(params);

                    thread.start();
                    Log.d(TAG,"SurfaceView. surfaceCreated.");
                }


            }

Einer meiner Fragen über setFixedSize ist, was die Einheiten tun, die Parameter der Funktion dar? Die int ist für dot Punkte oder vielleicht Pixel? Ich bin das Lesen der Dokumentation:

http://developer.android.com/reference/android/view/SurfaceHolder.html

allerdings heißt es nur, dass die Parameter für setFixedSize ganze zahlen sind. Ich sehe nicht ein, noch, wo Sie beschreibt, welche Einheiten die zahlen darstellen könnten. Bin ich vielleicht versuchen, die Größe der SurfaceView von einer schlechten Lage
oder ist es irgendein anderes problem? Ich bin die Entwicklung von targeting API 19 mit einem min-API von 9.

P. S. ich glaube, ich sehe was ist denn jetzt Los setFixedSize() ändert die Auflösung der Leinwand, nicht aber seine Breite und Höhe in das LinearLayout, wie ich wollte, zu tun. Ich habe die Bildschirm Breite und Höhe in dem code hinter, und was ich vorhabe zu tun ist, ändern Sie die Breite und Höhe der SurfaceView, wie Sie existiert, in der layout.

P. P. S. ich war in der Planung mit dem SurfaceView innerhalb einer ScrollView aber ich bin jetzt zu Lesen, dass der Ansatz vielleicht nicht möglich sein. Ich bin, herauszufinden, mehr von diesem Beitrag:

https://groups.google.com/forum/#!msg/android-developers/zkdnM0G225I/tt_FJGyOkB4J

Danke

Zu sehen setFixedSize() in Aktion, siehe die "hardware-scaler exerciser" Aktivität in Grafika (github.com/google/grafika). Kurze demo hier: youtube.com/watch?v=qpRaD-ij2xc

InformationsquelleAutor Eae | 2014-09-03

Schreibe einen Kommentar