Pregunta

Quiero saber si hay alguna forma de usar nativo TextView o cualquier otro diseño de Android dentro de Baseandengine Activity.

Mi aplicación está usando AndEngine para una de su pantalla completa. Esta pantalla se extiende desde BaseandEngine y necesito usar algunas vistas nativas como TextView dentro de esa pantalla. Porque Andengine no funciona bien para el texto árabe y necesito mostrar algún texto árabe en la pantalla de juego.

O si es posible, cómo mostrar el texto árabe en texto cambiante en AndEngine. Como texto cambiante, escriba árabe de izquierda a derecha en orden inverso.

¿Fue útil?

Solución

Por supuesto que puede.

Revise este código, básicamente anule onSetContentView, entonces puedes configurar lo que quieras.

@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);
}

(Este método va a su subclase de BaseGameActivity.)

También podría hacerlo a través de XML, pero creo que este método es más claro.

Otros consejos

También puedes usar AndEngine para fuentes árabes y persa. Pero de una manera diferente. Para hacerlo, necesita crear un sprite y agregarle un mapa de bits. Antes de eso, dibujas tu texto en ese mapa de bits.

El siguiente código es un ejemplo que dibuja el texto persa/árabe y lo adjunta a un sprite. Para que podamos unir el sprite a nuestra escena. Este es un ejemplo para mostrar cómo podemos hacer eso, por lo que puede ajustar el mapa de bits y el tamaño de texto usted mismo. Si su dispositivo admite persa/árabe, este código funcionará correctamente. Si el texto no aparece en su escena, cambie su posición, está fuera de la pantalla

La función de código de ejemplo imprimirá el "golf persa" en persa/árabe.

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);
    }

No uses Android TextView ... hace que tu juego sea feo ...

No puede usarlos directamente en AndEngine, porque los objetos en AndEngine son objetos OpenGL. Pero puede usar Android OS para dibujar un mapa de bits de cualquier vista estándar, y luego crear una textura y un sprite desde esa vista. Esto es menos que óptimo para un caso como el texto árabe, pero funcionará. Tenga cuidado con las filtraciones de memoria mientras crea los mapas de bits de sus vistas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top