There was a post a while back about creating a window that was slightly transparent and overlays the ribbon. The purpose of this was to create a clock application (I think?) that sits on top of the homescreen for easy reference.
I posted a solution in a completely unrelated thread but this should probably be in separate thread (the original one was closed).
Here's the code:
Code:
class FloatingScreenMain extends UiApplication {
public static void main( String[] args ) {
FloatingScreenMain app = new FloatingScreenMain();
app.enterEventDispatcher();
}
FloatingScreenMain() {
/**
* Putting this on the event stack instead of pushing a screen from main
* ensures that the backbuffer is not cleared and that the main ribbon
* continues to repaint.
*/
UiApplication.getUiApplication().invokeLater( new Runnable() {
public void run() {
CustomPopupScreen popup = new CustomPopupScreen();
pushScreen( popup );
}
});
}
}
class CustomPopupScreen extends Screen {
private final static int _CUSTOM_SIZE = 100;
private final static int _ALPHA = 0xBF; // 75% alpha
private final static int _X = ( Display.getWidth() - _CUSTOM_SIZE ) >> 1;
private final static int _Y = ( Display.getHeight() - _CUSTOM_SIZE ) >> 1;
CustomPopupScreen() {
super( new VerticalFieldManager( Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR ) );
add( new LabelField( "Floating Popup" ) );
}
protected void sublayout( int width, int height ) {
setExtent( _CUSTOM_SIZE, _CUSTOM_SIZE );
setPosition( _X, _Y );
layoutDelegate( _CUSTOM_SIZE, _CUSTOM_SIZE );
}
protected void paintBackground( Graphics g ) {
XYRect myExtent = getExtent();
int color = g.getColor();
int alpha = g.getGlobalAlpha();
g.setGlobalAlpha( _ALPHA );
g.setColor( 0xE3E3E3 );
g.fillRect( 0, 0, myExtent.width, myExtent.height );
g.setColor( color );
g.setGlobalAlpha( alpha );
}
protected boolean keyDown( int keycode, int status ) {
if ( Keypad.key( keycode ) == Keypad.KEY_ESCAPE ) {
close();
return true;
}
return super.keyDown( keycode, status );
}
}