Jaka jest zależność między pikselami a skalowanymi pikselami

Użyłem edytora układu w Eclipse, aby utworzyć makietę mojego interfejsu użytkownika, a następnie utworzyłem kod, aby zapełnić go dynamicznie, a rzeczy pojawiają się w różnych rozmiarach. XML, którego używam do dodawania obrazów gwiazd, wygląda tak:

<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" />

a kod Java, którego używam do zrobienia tego samego, wygląda następująco:

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);

Kiedy uruchamiam moją aplikację na G1, wszystko układa się w linii i wygląda dobrze, ale kiedy uruchomię ją na Droid, gwiazdy, które dodam za pomocą Javy, są o połowę mniejsze niż te, które dodaję w moim XML. Co muszę zrobić, aby wszystko odpowiednio się skalowało?

Edytuj: Są to świetne odpowiedzi, ale muszę wiedzieć, jak to zrobić z kodu. Kiedy ustawiam rozmiar w surowych pikselach, czy jest jakiś sposób na ustawienie rozmiaru w dipach?

questionAnswers(5)

yourAnswerToTheQuestion