Вопрос

Я хочу знать, есть ли способ использовать родной TextView или любая другая планировка Android внутри BaseAndengine Activity.

Мое приложение использует AndEngine для одного из своего экрана. Этот экран расширен от BaseAndengine, и мне нужно использовать какой -то нативный вид, как TextView внутри этого экрана. Потому что Andengine не работает нормально для арабского текста, и мне нужно показать немного арабского текста на игровом экране.

Или, если возможно, как показать арабский текст в изменчивом тексте в Andengine. Как изменяемый текст напишите арабский слева направо в обратном порядке.

Это было полезно?

Решение

Конечно вы можете.

Проверьте этот код - в основном вы переопределяете onSetContentView, тогда вы можете установить все, что хотите.

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

(Этот метод идет на ваш подкласс BaseGameActivity.)

Вы также можете сделать это через XML, но я думаю, что этот метод более ясен.

Другие советы

Вы также можете использовать антенгин для арабских и персидских шрифтов. Но по -другому. Для этого вам нужно создать спрайт и добавить в него растровое изображение. До этого вы нарисуете свой текст на этой растровой карте.

Следующий код является примером, который рисует текст персидского/арабского и прикрепляет его к спрайту. Таким образом, мы можем прикрепить спрайт к нашей сцене. Это пример, чтобы показать, как мы можем это сделать, поэтому вы можете настроить растровый карту и размер текста самостоятельно. Если ваше устройство поддерживает персидский/арабский, этот код будет работать должным образом. Если текст не отображается в вашей сцене, измените его положение, он вне экрана

Пример функции кода будет печатать «персидский гольф» у персидских/арабских.

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

Не используйте Android TextView ... это делает вашу игру уродливой ....

Вы не можете использовать их непосредственно в Andengine, потому что объекты в Andengine являются объектами OpenGL. Но вы можете использовать ОС Android, чтобы нарисовать растровую карту любого стандартного представления, а затем создать текстуру и спрайт из этого представления. Это не оптимально для такого случая, как арабский текст, но он будет работать. Будьте осторожны с утечками памяти, когда вы создаете растровые изображения своих взглядов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top