Hi All, I've been playing with Dick's Flubber for Android application, I've come up with a few tweaks and I was wondering if anybody would mind casting their eye over them as a kind of peer review?
I've been working on developing a new layout, "WallLayout": <?xml version="1.0" encoding="utf-8"?> <WallLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> ... I've not changed the rest so I'm stripping it out ... </LinearLayout> </LinearLayout> </WallLayout> The effects of the Wall Layout cascade down into all the inner layouts, ensuring that the UI components don't quite line up on the screen, providing a default colour scheme not recommended for those suffering from 'the morning after a three bottle podcast' hangovers and if you use the trackball to navigate, focus moves randomly between components, regardless of the physical layout. It really rocks, man. I've also been playing with the Flub button code, I want to differentiate the reason why (using multiple flub buttons) the podcast needs an edit, and I've managed to constrain all my changes to the flubButtonPressed method: @IdeallyWrittenIn("Scala") @Avast protected void (View v, ButtonType buttonType) { long startTime = mStartTime; if (startTime == 0L) return; // bail if the timer is not running v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); double seconds = 0.0; long millis = SystemClock.elapsedRealtime() - startTime; seconds = (double)millis / 1000.0; String label = twoPlaces.format(seconds) + " \t" + twoPlaces.format(seconds) + " \t" + mFlubCount + "\n"; mFlubList.append(label); mFlubCount++; switch(buttonType) { case OUT_OF_WINE: MediaPlayer.create(this, R.raw.openNewBottleFx).start(); break; case BAD_JOKE: MediaPlayer.create(this, R.raw.tumbleweedFx).start();break; case WHO_MENTIONED_APPLE: MediaPlayer.create(this, R.raw.penguinFx).start();break; case WHO_MENTIONED_DOTNET: MediaPlayer.create(this, R.raw.developersDevelopersDevelopersFx).start();break; case WHO_MENTION_GROOVY: MediaPlayer.create(this, R.raw.weLoveTheGroovyFx).start();break; case TOO_MUCH_WINE: // TODO need to expedite the handling of this somehow before we get a resource leak throw new BladderOverflowException(); } } Notes: - BladderOverflowException extends RuntimeException - I think the IdeallyWrittenIn annotation is self-explanatory - The Avast annotation is used to indicate methods that can be boarded, ahem, called, unexpectedly from other lanugages. For example from Scala. With the whip crack feature I've been working on an effects component. It adds a user-defined delay and a decaying echo to the specified audio stream (specified in multiples of six months). It also takes refined audio and strips it back to the bare bones, the output is therefore a more base version of the input. I'm announcing it now but I'm not going to release this filter as an alpha for a few months. I might release a beta next year, or I might have moved on to the next big thing by then. I'm thinking of calling it "FXify" All comments gratefully accepted. -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
