Не показывает прозрачный фон? - PullRequest
1 голос
/ 30 мая 2011

Привет, разработчики. У меня есть экран с прозрачным фоном (растровое изображение). У меня есть поле списка, помещенное поверх него, но проблема в том, что прозрачный фон не показывает предыдущий экран, вместо этого он показывает белый экран с полем списка.

public class IndexScreen extends MainScreen implements ListFieldCallback {

    private Vector rows;
    ListField listItems;
    int listItem;
    int listFieldIndex = -1;
    TableRowManager row;
     Bitmap indexBox = Bitmap.getBitmapResource("res/screens/Index_Box.png");

    public IndexScreen() {
        listItems = new ListField() {
        listItems.setRowHeight(20);
        listItems.setCallback(this);
        rows = new Vector();

        listItems.setSize(rows.size());
        _listVfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL) {

            public void paint(Graphics g) {
                g.drawBitmap(0, 0, UIinitialize.screenWidth,
                            UIinitialize.screenHeight, indexBox, 0, 0);

                super.paint(g);
            }

            protected boolean navigationMovement(int dx, int dy, int status,
                    int time) {
                return super.navigationMovement(dx, dy, status, time);
            }
            protected void sublayout(int maxWidth, int maxHeight) {

                layoutChild(listItems, maxWidth, maxHeight);
                setPositionChild(listItems, 5, 0);       
                    setExtent(maxWidth, 255);
            }
        };
        _listVfm.add(listItems);
        add(_listVfm);

        UiApplication.getUiApplication().invokeLater(new Runnable() {
            public void run() {
                listItems.invalidate();
            }
        }, 500, true);

    }

    public void drawListRow(ListField listField, Graphics graphics, int index,
            int y, int width) {
        TableRowManager rowManager = (TableRowManager) rows.elementAt(index);
        rowManager.drawRow(graphics, 0, y, width, listItems.getRowHeight());
    }

    class TableRowManager extends Manager {
        public TableRowManager() {
            super(0);
        }

        public void drawRow(Graphics g, int x, int y, int width, int height) {
            layout(width, 250);
            setPosition(x, y);
            g.pushRegion(getExtent());
            subpaint(g);
            g.setColor(0x00CACACA);     
            g.popContext();
        }
        protected void sublayout(int width, int height) {
            int preferredWidth = getPreferredWidth();
            Field field = getField(0);
            layoutChild(field, preferredWidth, height);
            setPositionChild(field, 0, 0);
            setExtent(width, height);

        }
        public int getPreferredWidth() {
            return listItems.getWidth();
        }
        public int getPreferredHeight() {
            return listItems.getRowHeight();
        }
    }

    public Object get(ListField listField, int index) {
        return null;
    }
    public int getPreferredWidth(ListField listField) {
        return 0;
    }
    public int indexOfList(ListField listField, String prefix, int start) {
        return 0;
    }
}

Приведенный выше код является частью кода, который я использую. Как я могу реализовать его для просмотра прозрачного фона. Может кто-нибудь, пожалуйста, помогите мне. Спасибо.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

MainScreen включает свой непрозрачный фон.Вам придется расширить экран, если вы хотите иметь прозрачный / полупрозрачный фон.

0 голосов
/ 01 августа 2012

Другой вариант, который я использовал в своих приложениях, это использование FullScreen вместо MainScreen.FullScreen позволяет прозрачные фоны.Если вы используете setStatus или setTitle, вам нужно будет найти другой метод отображения этих данных, но в остальном он очень похож.

Однако из вашего кода расширение Screen вместо MainScreen, вероятно, будет более подходящим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...