<ImageView android:id=”@+id/player_stat_health” android:layout_width=”76dp” android:layout_height=”13dp” android:layout_gravity=”left|top” android:layout_marginLeft=”138dp” android:layout_marginTop=”53dp” android:background=”@drawable/bar_orange” /> 예들들어 위와 같이 ImageView로 표시할 그래프의 width를 76dp로 설정한 후에 코드상으로 계산하여 다시 지정할때 getLayoutParams().width 로 지정한다. 그런데 이때 지정하는 숫자는 Pixel 이라서 76이라고만 하면 76px이 된다. 단말기마다 Density가 다르므로 이 값을 구해서 곱해주면 dp -> px 로 변환할 수 있다.

	float scale = getContext().getResources().getDisplayMetrics().density;
	player_stat_health.getLayoutParams().width = (int)(currentHealth * 76 * scale / health + 0.5f);
	player_stat_power.getLayoutParams().width = (int)(currentPower * 76 * scale / power + 0.5f);
참고사이트 http://stackoverflow.com/questions/5255184/android-and-setting-width-and-height-programmatically-in-dp-units]]>

Related Posts