2017-10-23 15 views
0

Androidアプリでは、画面の上半分にビットマップ(車のダッシュボード)を使用しようとしています。このビットマップは、画面サイズに応じてサイズが変更されます(アクティビティは常にPORTRAITです)。私は に必要な唯一のリソース「ノーxhdpi、xxhdpi ...)ビットマップにテキストを描画し、OnTouch()を使用してください

を持っている - に応じてビットマップがタップされた場所を正確に知っている、別の何かをする - 、ビットマップ上 を正確な場所にテキストを描画しますそれがタップされた場所(どの車のダッシュボードの「ボタン」が使用されているか)

XMLレイアウトでImageViewにビットマップを配置しようとしました。この場合、OnDraw()でテキストを描画する場所はわかりません。 ビットマップのサイズをアクティビティで取得できませんでした(常にゼロ)

したがって、ビットマップをOnDraw()に描画します。 RectFでビットマップを描画し、ビットマップに円を正確に描画する方法を知っています onTouchEventはタッチのXとYを示しますが、カーダッシュボードのどのボタンが使用されているかわかりませんなぜなら私はビットマップのサイズを知らないからです。

これは明らかです。

これを行うにはどうすればよいですか?おかげで

答えて

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 
関連する問題