Frage

Ich möchte wissen, gibt es eine Möglichkeit, native zu verwenden TextView oder ein anderes Layout von Android in Baseandgine Activity.

Meine Anwendung verwendet Andengine für einen seiner gesamten Bildschirm. Dieser Bildschirm wird von Baseandgine erweitert und ich muss eine native Ansicht wie Textview in diesem Bildschirm verwenden. Weil Andengine für arabischem Text nicht gut funktioniert und ich einen arabischen Text auf dem Spielebildschirm anzeigen muss.

Oder wenn möglich, wie man arabischen Text in veränderbarem Text in Andengine zeigt. Als veränderbarer Text schreiben Arabisch von links nach rechts in umgekehrter Reihenfolge.

War es hilfreich?

Lösung

Natürlich kannst du.

Überprüfen Sie diesen Code aus - im Grunde überschreiben Sie onSetContentView, Dann können Sie einstellen, was Sie wollen.

@Override
protected void onSetContentView() {
    final FrameLayout frameLayout = new FrameLayout(this);
    final FrameLayout.LayoutParams frameLayoutLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT);

    this.mRenderSurfaceView = new RenderSurfaceView(this);
    mRenderSurfaceView.setRenderer(mEngine);
    final FrameLayout.LayoutParams surfaceViewLayoutParams = new FrameLayout.LayoutParams(super.createSurfaceViewLayoutParams());
    frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);

    //Create any other views you want here, and add them to the frameLayout.

    this.setContentView(frameLayout, frameLayoutLayoutParams);
}

(Diese Methode geht an Ihre Unterklasse von BaseGameActivity.)

Sie könnten es auch über XML tun, aber ich denke, diese Methode ist klarer.

Andere Tipps

Sie können Andengine auch für arabische und persische Schriftarten verwenden. Aber auf andere Weise. Dazu müssen Sie ein Sprite erstellen und ihm eine Bitmap hinzufügen. Vorher zeichnen Sie Ihren Text auf diese Bitmap.

Der folgende Code ist ein Beispiel, das den Text Persian/Arabians -Text zeichnet und ihn an ein Sprite anhält. So können wir das Sprite an unsere Szene befestigen. Dies ist ein Beispiel, um zu zeigen, wie wir das tun können, damit Sie die Bitmap und die Textgröße selbst anpassen können. Wenn Ihr Gerät Perser/Araber unterstützt, funktioniert dieser Code ordnungsgemäß. Wenn der Text nicht in Ihrer Szene angezeigt wird, ändern Sie seine Position, er ist nicht mehr auf dem Bildschirm

Die Beispielcode -Funktion druckt den "Persischen Golf" in Persischen/Arabern.

private void persianGolfPrinter(){
            BitmapTextureAtlas mBitmapTextureAtlas = new BitmapTextureAtlas(ResourceManager.getInstance().gameActivity.getTextureManager(), 400, 800, TextureOptions.BILINEAR);
            ITextureRegion mDecoratedBalloonTextureRegion;
            final IBitmapTextureAtlasSource baseTextureSource = new EmptyBitmapTextureAtlasSource(400, 800);
            final IBitmapTextureAtlasSource decoratedTextureAtlasSource = new BaseBitmapTextureAtlasSourceDecorator(baseTextureSource) {
                    @Override
                    protected void onDecorateBitmap(Canvas pCanvas) throws Exception {
                            this.mPaint.setColor(Color.BLACK);
                            this.mPaint.setStyle(Style.FILL);
                            this.mPaint.setTextSize(32f);
                            this.mPaint.setTextAlign(Align.CENTER);
                            pCanvas.drawText("خلیج فارس", 150, 150, this.mPaint);

                    }

                    @Override
                    public BaseBitmapTextureAtlasSourceDecorator deepCopy() {
                            throw new DeepCopyNotSupportedException();
                    }
            };

            mDecoratedBalloonTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromSource(mBitmapTextureAtlas, decoratedTextureAtlasSource, 0, 0);
            mBitmapTextureAtlas.load();

            Sprite test = new Sprite(0,0,mDecoratedBalloonTextureRegion,ResourceManager.getInstance().engine.getVertexBufferObjectManager());
            this.attachChild(test);
    }

Verwenden Sie kein Android TextView ... es macht Ihr Spiel hässlich ....

Sie können sie nicht direkt in Andengine verwenden, da die Objekte in Andengine OpenGL -Objekte sind. Sie können jedoch Android OS verwenden, um eine Bitmap jeder Standardansicht zu zeichnen und dann eine Textur und ein Sprite aus dieser Ansicht zu erstellen. Dies ist für einen Fall wie arabischem Text weniger als optimal, aber er wird funktionieren. Seien Sie vorsichtig mit Speicherlecks, während Sie die Bitmaps Ihrer Ansichten erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top