我想将棋盘图像绘制到RelativeLayout的背景中。
我正在以纵向模式(垂直)测试它。
这是我的一段代码:
device_xdpi = getResources().getDisplayMetrics().xdpi;
device_ydpi = getResources().getDisplayMetrics().ydpi;
我想做的是:取较短边的dpi尺寸(纵向模式的上边缘)并使RelativeLayout的高度等于它。
我正在尝试这个:
chessBoardLayout = (RelativeLayout) findViewById(R.id.chessBoardLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, (int) device_xdpi);
chessBoardLayout.setLayoutParams(params);
但它没有用。
如何将device_xdpi转换为正确的dp?
答案 0 :(得分:1)
由于device_xdpi以像素为单位,因此
public static int convertPixelsToDp(float px, Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
int dp = (int)(px / (metrics.densityDpi / 160f));
return dp;
}
答案 1 :(得分:1)
constructor you're using取像素,而不是dp。也就是说,您可以在没有任何dp /像素转换的情况下获得最短边的大小:
MATCH_PARENT
。getWidth()
和getHeight()