Monday, November 19, 2007

How to create a Linked List

This Java tip illustrates a method of creating a List. The tip here describes various aspects of linked list such as adding an element in a list, retrieving an element and removing an element from the list.

// Create a link list
List list = new LinkedList(); // Doubly-linked list
list = new ArrayList(); // List implemented as growable array

// Append an element to the list
list.add("a");

// Insert an element at the head (0) of the list
list.add(0, "b");

// Get the number of elements in the list
int size = list.size(); // 2

// Retrieving the element at the end of the list
Object element = list.get(list.size()-1); // a

// Retrieving the element at the head of the list
element = list.get(0); // b

// Deleting occurrance of the first element of the link list
boolean b = list.remove("b"); // true
b = list.remove("b"); // false

// Remove the element at a particular index
element = list.remove(0); // a

Thursday, November 15, 2007

Review: Jazzing Up the BlackBerry Curve with a Case and Stickers

By Melissa Oxendale
December 7, 2007

While I still love my Fortte case (see our review), I wanted to try something a little different for my BlackBerry. I wanted something to make my Curve stand out. So off to eBay I went.

I found stickers to personalize my BlackBerry that you could pick in a large number of designs for around $8. Many were colorful and abstract, while some sported sunsets and scenic views. All the choices made it hard to pick three I wanted.

To compliment my new stickers, I decided to get a hard clear case to go over them. So I ended up ordering the Super Slim Crystal Hard Case from Seidio.

It took about week for everything to arrive.

First, I started with a screen protector, as Seidio's Crystal case does not cover the screen. (All the pictures in this story are of the Curve with the screen protector, case and stickers installed.

Stickers
Once the screen was covered I moved to the stickers. The hardest part was pulling the front off the paper. It had the buttons cut out, but the sticker material was still there. I was sure putting the sticker over my buttons would be a painful experience. I even started with my least favorite sticker, just in case I ruined it.

Turns out my concerns weren't founded. For the most part, the sticker easily fell into place, although I had a little trouble getting it placed correctly at the top as I seemed to always put it a little too far to the left.

One word of caution: if the sticker goes over the screen protector, it will pull the screen protector up when you tug on it.

The back of the sticker pack had two pieces. On piece went over the back cover, so you are able to take it off to reach the battery, SIM, and memory card. The other went around the door. The back door part had cut outs for the camera, flash, and mirror. I had no trouble at all putting the back door sticker on. With the smaller part that stuck directly to the phone, I again wanted to put it a little too far to the left.

Overall, the stickers applied much easier than I expected. And there weren't any problems with air bubbles underneath it. They're a cheap and easy way personalize your BlackBerry.

Seido Crystal Case
On top of the sticker went my new Seidio Crystal Case.

It came with simple to follow instructions that guide you to getting the case on. I could tell right away it wasn't snapped all the way on because it made the side keys hard to type on. Just a little extra squeeze and it snapped into place.

All of the buttons, headphone jack, and USB jack were easy to get to. With the Crystal Case on the Curve was too large for my Fortte case or the pouch it came with, however. I was able to fit it into a case I used with my 8700 though, even through it was not designed with a trackball in mind. It also fit in the BlackBerry case that came with the AT&T 8820. I would imagine it would fit in most cases that have the elastic on the sides.

Now my BlackBerry will stand out, although I no longer have anywhere to attach my Tardis Phone Charm. Even with stickers and new case, typing was still a breeze.

The Seidio Crystal case is $24.95 at Seidio's Web site. The stickers were around $8.00 for three on eBay.

Friday, November 09, 2007

How to create a bouncing ball

This Java tip shows how to create a bouncing ball animation using threads.


Image

import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BounceThread {
public static void main(String[] args) {
JFrame frame = new BounceThreadFrame();
frame.show();
}
}

class BounceThreadFrame extends JFrame {
public BounceThreadFrame() {
setSize(300, 200);
setTitle("Bounce");

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

Container contentPane = getContentPane();
canvas = new JPanel();
contentPane.add(canvas, "Center");
JPanel p = new JPanel();
addButton(p, "Start", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Ball b = new Ball(canvas);
b.start();
}
});

addButton(p, "Close", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
canvas.setVisible(false);
System.exit(0);
}
});
contentPane.add(p, "South");
}

public void addButton(Container c, String title, ActionListener a) {
JButton b = new JButton(title);
c.add(b);
b.addActionListener(a);
}

private JPanel canvas;
}

class Ball extends Thread {
public Ball(JPanel b) {
box = b;
}

public void draw() {
Graphics g = box.getGraphics();
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}

public void move() {
if (!box.isVisible())
return;
Graphics g = box.getGraphics();
g.setXORMode(box.getBackground());
g.fillOval(x, y, XSIZE, YSIZE);
x += dx;
y += dy;
Dimension d = box.getSize();
if (x < 0) {
x = 0;
dx = -dx;
}
if (x + XSIZE >= d.width) {
x = d.width - XSIZE;
dx = -dx;
}
if (y < 0) {
y = 0;
dy = -dy;
}
if (y + YSIZE >= d.height) {
y = d.height - YSIZE;
dy = -dy;
}
g.fillOval(x, y, XSIZE, YSIZE);
g.dispose();
}

public void run() {
try {
draw();
for (int i = 1; i <= 1000; i++) {
move();
sleep(5);
}
} catch (InterruptedException e) {
}
}

private JPanel box;

private static final int XSIZE = 10;

private static final int YSIZE = 10;

private int x = 0;

private int y = 0;

private int dx = 2;

private int dy = 2;
}

Monday, November 05, 2007

Verizon Picks Up Smartphone Trio

By James Alan Miller
March 31, 2008

Click to View
Verizon Wireless expanded its already substantive portfolio of smartphones today, announcing plans to soon carry the BlackBerry Curve, HTC Touch, and the Motorola Q9. America's second largest wireless carrier made these announcements as the technology world focuses its gaze on Las Vegas, where the giant spring edition of the CTIA Wireless trade show and conference gears up to get started tomorrow.

Like AT&T's BlackBerry Curve, Verizon's version, called the BlackBerry 8330, integrates GPS to support location-based services, such as the operator's own VZ Navigator mapping service. It also sports a QWERTY thumb-keyboard, a 2 megapixel camera, QVGA screen, and Bluetooth 2.0. High-capacity SDHC memory cards and Verizon's 3G cellular-wireless data network are also supported.

Due in May, Verizon plans to sell the BlackBerry for $270 with a two-year agreement and after a $50 mail-in rebate. When you sign up for a qualifying voice and data plan the price drops $100 further.

The Motorola Q9c is essentially the same as the Q9m Verizon launched last summer, QWERTY keyboard and all. It integrates GPS, supports EV-DO and runs on Windows Mobile 6 Standard, which means the new Q, like all other Qs, doesn't have a touch screen.

The Q9c’s software bundle directs it more toward the business user than the earlier Q model, which placed more of a premium on multimedia. It is colored a bright a cheery lime-green, however.

When the Q9c ships next month, expect it to go for $250 with a two-year agreement and after a rebate. In addition to Verizon, Alltel and U.S. Cellular just picked up the Q9c as well.

Already available from Sprint and Alltel, Verizon is the third carrier-home HTC has found for the Touch in the U.S. Verizon is not calling it by that name, however, preferring the moniker XV6900 instead. And, unlike the other carriers, Verizon has chosen to enable the Touch’s GPS receiver to support its VZ Navigator service.

Otherwise, the Windows Mobile 6-run XV6900 seems to be nearly identical to the other Touches, with its 2 megapixel camera and similar - if not exactly the same – specifications.

As with the iPhone, the chief means of interaction between a Touch and a user is through the smartphone's touch screen and the user's fingers through HTC's proprietary TouchFLO technology, which essentially grafts an advanced touch interface onto the Windows Mobile user interface.

Due in April, Verizon expects to sell the XV6900 for $350 after a $50 mail-in rebate and if you sign up for two years—par for the course these days, it seems.

Although Apple sold twice as many iPhones, hitting the 4 million mark, last year, HTC moved a couple million Touches, not a shabby number by any means.