У меня есть ImageView в действии, верхние левые координаты которого я должен получить, поэтому я могу разделить изображение в 5 сенсорных зон. Я использую getLocationOnScreen для получения этих координат.Вверху слева Координаты ImageView в Android отображаются некорректно
Координата X хорошо, однако по какой-то причине координата Y кажется неисправной, всегда есть смещение, и оно, кажется, указывает на верхнюю часть окна (проверено это путем включения указателя в инструменты dev).
Вот код вида деятельности:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
amslerView = (ImageView) findViewById(R.id.amsler_grid);
locText = (TextView) findViewById(R.id.locationLabel);
amslerView.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN :
startX = (int) event.getRawX();
startY = (int) event.getRawY();
int[] loc = new int[2];
amslerView.getLocationOnScreen(loc);
Log.i("Screen Location of View", "X:" + loc[0] + "\t Y:" + loc[1]);
locText.setText("Location " + startX + " " + startY + "Screen View Location is " + "X:" + loc[0] + "\t Y:" + loc[1]);
break;
case MotionEvent.ACTION_UP :
endX = (int) event.getX();
endY = (int) event.getY();
// locText.setText("End Location " + endX + "\t" +
// endY);
break;
}
return true;
}
});
}
Вот XML макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/amsler_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
android:contentDescription="Amsler Grid"
android:padding="0dp"
android:scaleType="center"
android:src="@drawable/amsler_boundary" />
И это скриншот проблемы я столкнулся: http://puu.sh/4d1LJ.jpg
Как вам можно видеть, что координата X прекрасна, но координата Y показывает местоположение http://puu.sh/4d1OJ.jpg
Любая помощь приветствуется, я откровенно теряю, почему это происходит.
Это то, что я получаю при использовании getX(). Я пробовал почти каждую комбинацию кода, чтобы попытаться получить координаты, но до сих пор всегда существует смещение в Y. –
Hav3n