Android计算绘制

时间:2016-03-29 15:32:23

标签: android size brush

我想在我的应用程序中绘图,所以我希望我的画笔大小是设备屏幕的10%,这意味着对于所有设备,它应该是不同的大小。 我在android开发人员指南Here中读到有关dp。

的内容
        getScreenSizeDpi();
        m_brushSize = (int)(area * brush_percentages)/100;
        circle_area = m_brushSize * m_brushSize * Math.PI;
}

方法:

private void getScreenSizeDpi() {
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
    float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

    area = dpHeight * dpWidth;
}

但我想要的只是获得画笔大小的圆圈,谢谢大家。

2 个答案:

答案 0 :(得分:1)

如果您在Activity

内,请使用以下代码获取屏幕尺寸
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果您不在Activity内,请使用此代码获取Display对象

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

然后设置画笔大小

brush_size = 0.1 * width;// or 0.1 * height 

答案 1 :(得分:0)

也许是 compose 的更新

@Composable
fun ScreenSizedSquare() {
    val context = LocalContext.current.resources
    val displayMetrics = context.displayMetrics
    val screenWidth = (displayMetrics.widthPixels / displayMetrics.density).dp
    Box(
        modifier = Modifier
            .clip(shape = RectangleShape)
            .background(Color.Blue)
            .width(screenWidth)
            .height(screenWidth)
    )
}