Custom XML Attributes For Your Custom Android Widgets

In the last part of my Custom UI Tutorial, commenter Knut asked:

Is there an easy way to declare the listener in XML (similar to the android:onClick=”onMyButtonClick” in the stock controls)?

This is a great question, and in answering his question, I’ll go ahead and show you how to create other custom attributes you can put in the XML for your custom widgets. The goal will be something like this in your layouts:

<com.kdion.tutorial.MyCustomWidget
	android:id="@+id/theId"
	<!-- ...more stuff here... -->
	custom:myText="Something"
	custom:fancyColors="true"
	custom:onAction="myDoSomething"
	/>

We have a custom View called MyCustomWidget, and along with the standard android: attributes, we have a few of our own: myText="Something", fancyColors="true", and onAction="doSomething". Presumably, these would map to attributes we already have for our custom widget which we could set in code, but we want a shortcut to set them from XML.
Continue reading

Android Bitmap Blending – Color Channels

I recently was doing some investigation into doing image blending in android, and came across the quite powerful built-in capabilities of Paint. I was wondering if it was possible to combine several grayscale images into a color image, using the grayscale images as the color channels. If you are familiar with Photoshop or other graphics-editing programs, you are probably familiar with the concept of color channels, and how they are combined to create a color image. For this example, we will re-create the following image from its separated color channels:

The original, full color image

The original image. Original by Steve Berger Photography via flikr

Continue reading

Custom UI Elements in Android: Odometer Tutorial Part I

The finished Odometer

Introduction

This series of tutorials will provide an introduction to creating custom user interface elements in Android. By the end, you will have a complete custom widget that will allow input of numbers as if on an odometer. The user will slide the digits up and down, and change the digits.

This first part of the tutorial will get our test project created, and start building out the basic element of our odometer – a single-digit spinner.
Continue reading

Diving Boynton Beach

This past Saturday I went diving down in Boynton Beach with the great guys at American Divers. I just got a new camera and couldn’t wait to try it out underwater! We did a three-tank dive at a few reefs, and actually ended up doing somewhat of a reverse dive profile with a really short dive first, with a longer second and third dive (depths for all were around 45-50 ft). But it worked out well, since the best reef by far was the last – with a lot of cool wildlife! Saw 3-4 turtles, a couple of rays, and a good number of bugs (lobster). Even saw my first eel! All in all it was a reminder of why I love diving so much – and a reminder that I really should get my nitrox cert…

TED a Day

I absolutely Love TED. I think it might just be one of the greatest things on the web, and should be required viewing in every school. In fact, I could see an entire class devoted to watching and discussing TED talks. The variety of topics and level of prestige the presenters have is amazing, and just being exposed to the amazing work in a domain you are unfamiliar with is extremely beneficial, regardless of what you do.
Continue reading


© 2010 Kevin Dion