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.

Reply via email to