2016-12-14 2 views
0

Мне нужно перевернуться, не перемещая системное меню. Так что я делаю:Повернутый вид onTouch неправильные координаты

getWindow().getDecorView().getRootView().setRotation(180); 

Но все дочерние кнопки получить onTouch событие не тогда, когда они трогают, но когда я касаюсь области, где они были бы без вращения. Как я могу исправить проблему?

+0

вам нужно перевести событие касания с матрицей, а также так как вы код просто поворачивает конечный результат корневого представления, но не сам корневой вид. –

+0

Ну, я мог бы оспорить проблему. Кнопки «onTouch» запускаются с неправильного места. То есть, я могу коннектировать/переводить onTouch для представления, но он даже не вступает в игру, когда я касаюсь «оригинального» места ... –

+0

Тогда я думаю, вам нужно поместить некоторый взгляд на весь макет, и он должен переводить сенсорные события. Или сделайте что-то с пересекающимися языками parent layoutTouchEvents –

ответ

0

Got раствор без матрицы перевода и такого ... Просто создать новый класс Layout, как это:

public class RotatableView extends FrameLayout { 

public RotatableView(Context context) { 
    this(context, null); 
} 

public RotatableView(Context context, AttributeSet attributeSet) { 
    super(context, attributeSet); 
    setUpsideDown(); 
} 

private void setUpsideDown() { 
    this.setRotation(180); 
} 
} 

и использовать его для ваших макетов

Смежные вопросы