Qual é a relação entre pixels e pixels dimensionados

Eu usei o editor de layout no eclipse para simular meu layout de interface do usuário e, em seguida, criei o código para preenchê-lo dinamicamente e as coisas estão aparecendo como tamanhos diferentes. O XML que eu uso para adicionar as imagens da estrela é assim:

<ImageView
android:src="@drawable/star_gold"
android:layout_height="22sp"
android:layout_width="22sp"
android:adjustViewBounds="true"
android:layout_marginLeft="2sp"
android:layout_marginRight="2sp" />

e o código Java que uso para fazer a mesma coisa é assim:

ViewGroup.MarginLayoutParams layout = new ViewGroup.MarginLayoutParams(22, 22);
layout.setMargins(2, 0, 2, 0);
ImageView star = new ImageView(mContext);
star.setImageResource(R.drawable.star_gold);
star.setLayoutParams(layout);
star.setAdjustViewBounds(true);
holder.Stars.addView(star);

Quando eu executo meu aplicativo no G1, tudo fica alinhado e parece bom, mas quando eu o executo no Droid, as estrelas que adiciono via Java têm cerca de metade do tamanho das que adiciono no meu XML. O que preciso fazer para garantir que tudo seja dimensionado adequadamente?

Edit: Estas são ótimas respostas, mas eu preciso saber como fazê-lo a partir do código. Quando eu definir o tamanho em pixels brutos, existe alguma maneira de definir o tamanho em mergulho?

questionAnswers(5)

yourAnswerToTheQuestion