📄 midp2layoutview.java
字号:
case Item.LAYOUT_CENTER : x = (remainingWidth >> 1); break; case Item.LAYOUT_RIGHT : x = remainingWidth; break; } for (int i = 0; i < this.currentRow.size(); i++) { rowItem = (RowItem) this.currentRow.get(i); rowItem.x = x; x += rowItem.width + this.paddingHorizontal; // Next Item /** * Vertical Layout starts here */ int layout = rowItem.item.getLayout(); rowItem.y = this.contentHeight; if (Item.LAYOUT_VEXPAND == (layout & Item.LAYOUT_VEXPAND)) { // Vertical expansion is required, ignore all other rowItem.height = this.rowHeight; } else { layout = (layout & LAYOUT_VERTICAL); switch (layout) { case Item.LAYOUT_VCENTER : rowItem.y += ((this.rowHeight - rowItem.height) >> 1); break; case Item.LAYOUT_BOTTOM : rowItem.y += this.rowHeight - rowItem.height; break; } } } if (this.allRows.size() == 0) { // Adding first row this.contentHeight += this.rowHeight; } else { this.contentHeight += this.paddingVertical + this.rowHeight; } if ( this.rowWidth > this.contentWidth ) { this.contentWidth = this.rowWidth; } // Get ready for next row this.allRows.add(this.currentRow); this.rowHeight = this.rowWidth = 0; this.currentRow = new ArrayList(); } /* * (non-Javadoc) * * @see de.enough.polish.ui.ContainerView#paintContent(int, int, int, int, * javax.microedition.lcdui.Graphics) */ protected void paintContent(int x, int y, int leftBorder, int rightBorder, Graphics g) { for (int i = 0; i < this.allRows.size(); i++) { ArrayList row = (ArrayList) this.allRows.get(i); for (int j = 0; j < row.size(); j++) { RowItem rowItem = (RowItem) row.get(j); int xItem = x + rowItem.x; rowItem.item.paint(xItem, y + rowItem.y, Math.max(leftBorder, xItem), Math.min(rightBorder, xItem + rowItem.width), g ); } } } /* * (non-Javadoc) * * @see de.enough.polish.ui.ContainerView#getNextItem(int, int) */ protected Item getNextItem(int keyCode, int gameAction) { if (this.allRows.size() == 0) return null; Item[] items = this.parentContainer.getItems(); if (this.focusedIndex >= items.length) { for(int i=0; i < items.length; i++) { if(items[i].appearanceMode != Item.PLAIN) { focusItem(i, items[i]); return items[i]; } } } // Find out where the current focused item is. Item focusedItem = items[this.focusedIndex]; int rowIndex = 0; //int colIndex = 0; int xOffset = 0; for (int i = 0; i < this.allRows.size(); i++) { ArrayList row = (ArrayList) this.allRows.get(i); for (int j = 0; j < row.size(); j++) { RowItem rowItem = (RowItem) row.get(j); if (rowItem.item == focusedItem) { rowIndex = i; //colIndex = j; xOffset = rowItem.x + (rowItem.width >> 1); i = 10000; break; } } } Item item = null; if (gameAction == Canvas.UP && keyCode != Canvas.KEY_NUM2) { // Going Up if (this.horizontalOffset == -1) { this.horizontalOffset = xOffset; } while (rowIndex > 0) { rowIndex--; item = getItemByHorizontalOffset((ArrayList) this.allRows .get(rowIndex), this.horizontalOffset); if(item != null) break; } if(item == null){ // Can't go up any more } } else if (gameAction == Canvas.DOWN && keyCode != Canvas.KEY_NUM8) { // Going Down if (this.horizontalOffset == -1) { this.horizontalOffset = xOffset; } while(rowIndex < (this.allRows.size() - 1)) { rowIndex++; item = getItemByHorizontalOffset((ArrayList) this.allRows .get(rowIndex), this.horizontalOffset); if(item != null) break; } if(item == null){ // Can't go Down any more } } else if (gameAction == Canvas.RIGHT && keyCode != Canvas.KEY_NUM6) { // Going Right this.horizontalOffset = -1; // Reset vertical movement position item = getNextFocusableItem(items, true, 1, false); } else if (gameAction == Canvas.LEFT && keyCode != Canvas.KEY_NUM4) { // Going Left this.horizontalOffset = -1; // Reset vertical movement position item = getNextFocusableItem(items, false, 1, false); } // Finally set the focus if it has been found if (item != null) { for (int i = 0; i < items.length; i++) { if (items[i] == item) { focusItem(i, item); break; } } } else { if (this.focusedIndex >= items.length) { for(int i=0; i < items.length; i++) { if(items[i].appearanceMode != Item.PLAIN) { focusItem(i, items[i]); return items[i]; } } } } return item; } private Item getItemByHorizontalOffset(ArrayList row, int xOffset) { Item item = null; RowItem rowItem = null; int distance = 60000; int itemOffset = 0; int itemDistance = 0; for (int i = 0; i < row.size(); i++) { rowItem = (RowItem) row.get(i); if (rowItem.item.appearanceMode != Item.PLAIN) { itemOffset = rowItem.x + (rowItem.width >> 1); itemDistance = xOffset - itemOffset; if(itemDistance < 0) itemDistance = -itemDistance; if (itemDistance < distance) { distance = itemDistance; item = rowItem.item; } } } return item; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -