Posts Tagged ‘User interface’

Hello everyone, how is your Monday morning? So remember I was working on some new UI components for Android Applications: the application main screen you only have so much room for a back button, forward button, and the dynamic status bar. Thus, the issue becomes how to train the user so that the back and forward buttons are automatically recognized by the user upon first using the application?

We could use the set of splash screens do that, assuming that left button is company logo and the back button and the right button is application logo and forward button the splash alpha screens:

Than the Application splash screen:

Not bad. You will notice that I am using large typeface for the first letter in the Company and Application logos so that the navigation left and right buttons are easy to recognize as the navigation buttons will be using the same logs as graphics.

Reblog this post [with Zemanta]

More iPhone UI Goodness

Posted: February 28, 2010 in Android
Tags: ,

Title bar flashing was removed by sticking:

android:theme="@android:style/Theme.NoTitleBar" the first activity. Music was added to first activity(sorry about no sound in the video..still figuring out gtk-recordmyDesktop and my soundcard):

 final MediaPlayer mp = MediaPlayer.create(Splash3d.this, R.raw.welcome2jungle_remix);
         try {
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
		} catch (IOException e) {
			// TODO Auto-generated catch block

What is next is to override the transition to the next activity using overridePendingTransition() which is an Android 2.0 feature. Prior to Android 2.0 you would do it manually in each activity being triggered by a hander timer.

The general idea is as I work through polishing certain UI coding elements to do a tutorial series on making Android Apps Look/feel like iPhone Applications. Right now I have the 3D Splash screen implemented:

Basically, in frame layouts everything is visible but you can modify  that on-the fly and than use matrix and camera to manipulate the ImageView.

Now, its change from a click handler to rotating it based on a time period unit than after that time period expires sending intent to change to next activity. Than put some ImageView manipulation magic in for reflection and shadows, which means translating all the layout XML parameters to java code setting them as that is the only way to grab the ImageView correctly to set reflection and shadows.

I am using popularity to decide if the tutorial series is worth it. Thus far it seems like there may be enough interest.

Reblog this post [with Zemanta]

I am at a point with certain stealth Android project development that I need to test certain issues and items on Sense UI, Rachael UI, and MotoBlur UI. There still is no SDK-Emulator add ons for said UIs.

Yeah I know, I could download one of those underground roms and copy/paste the images into  a created avd to get into an emulator. But do I really want to do so? Oh, you did not know you can copy paste a rom image into a created AVD? Tricks of the trade, tricks of the trade…

Reblog this post [with Zemanta]

New Android UI Meme

Posted: September 2, 2009 in Android, Java, Mobile
Tags: , ,
Image representing Android as depicted in Crun...
Image via CrunchBase

Monday TechCrunch covered FlyScreen by Cellogic. See:

Now, what everyone missue d is that Cellogic used a Replacement Android HomeScreen to get that UI. Due to the webkit webview works in Android the  optimization you are forced to make to allow some multiple Web Browser widgets open with rss feed data or social data requires memory optimization so that those windows ae not closed due to constrained memory space. That is the same set of predictions that I made with this HomeScreen experiment due to my other work on the Loopt clone in full webkit webview called Xspot:

And that is exactly the same optimization puzzle that Motoroal faces in its Blur UI innovation. Dues to some of those optimization puzzle snot being solved as far as Android Core code until Android 2.0 or Android 2.5 this solution will  be quite popular.Its popular enough that I might have snagged some project interviews with Middlware firms that have OEM contracts.

Reblog this post [with Zemanta]

So you this nice android application but you need  to test the UI using some touch screen touch events in which you the developer supply the x and y coords in you test class. Right now there is not a TouchUtils method for this set of use cases. The method I came up with probably looks like this:

* @param test
* @param view
* @param touchX in DIPs
* @param touchY in DIPs
static void touchPoint(InstrumentationTestCase test, View view, float touchX, float touchY, Activity activity ) {

Instrumentation inst = test.getInstrumentation();
float screenDensity;
float screenWidthPx;
float screenHeightPx;
float touchTempX;
float touchTempY;
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();

* 1 dip = 1 pixel thus
* dip x density = pixels
* density of 1 equals
* 160 dpi 240×320 baseline display or 1.5″x2″
DisplayMetrics dm = new DisplayMetrics();
screenDensity = dm.density;
screenHeightPx = dm.heightPixels;
screenWidthPx = dm.widthPixels;

if (touchX * screenDensity <= screenWidthPx){ touchTempX = touchX * screenDensity; }else{ touchTempX = 1; } if (touchY * screenDensity <= screenHeightPx) { touchTempY = touchY *screenDensity; }else{ touchTempY = 1; } // touch down MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, touchTempX, touchTempY, 0); inst.sendPointerSync(event); inst.waitForIdleSync(); // touch up MotionEvent eventUp = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, touchTempX, touchTempY, 0); inst.sendPointerSync(eventUp); inst.waitForIdleSync(); } [/sourcecode] It should work. notice that it defaults to coords of 1,1 if you the developer goof up on your x and y cordinate inputs as its expected that you input your x and Y coordinates in terms of DIP not pixels so that your unit tests will always work no mater what the screen size.

Reblog this post [with Zemanta]