在位图上绘制文本并使用OnTouch()

时间:2017-10-23 12:08:57

标签: bitmap draw ontouchlistener ontouchevent ontouch

在may app app中,我试图使用填充屏幕半顶部的位图(汽车仪表板)。根据屏幕大小调整此位图的大小(活动始终为PORTRAIT)。我只有一个资源'没有xhdpi,xxhdpi ......)

我需要 - 在位图上的精确位置绘制文字, - 并确切地知道位图被点击的位置,根据点击的位置做了不同的事情(哪个汽车仪表板"按钮"已被使用)

我试图将位图放在ImageView的XML布局中。在这种情况下,我不知道OnDraw()在哪里绘制文本? 我没有成功获得活动中位图的大小(总是为零)

所以我在OnDraw()中绘制位图。我知道如何在RectF中绘制位图,并在位图中精确绘制一个圆(例如) 在活动中,onTouchEvent提供触摸的X和Y,但我不知道汽车仪表板上的哪个按钮已被使用,因为我不知道位图的大小。

希望这很清楚。

最好的方法是什么?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

我发现了几个帖子并制作了一大堆,它对我有用,但我认为应该存在更简单的帖子:

int screenWidth = getApplicationContext()。getResources()。getDisplayMetrics()。widthPixels; // 1080     int screenHeight = getApplicationContext()。getResources()。getDisplayMetrics()。heightPixels; // 1920

// status bar height OK (72)
int statusBarHeight = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
    statusBarHeight = getResources().getDimensionPixelSize(resourceId);
}

// ActionBar height
int actionBarHeight=0;
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
// what I aml looking for
int myCanvasHeight = screenHeight - statusBarHeight - actionBarHeight; // 1680