Autor Wątek: Java warstwa ImageView a jej pozycja  (Przeczytany 1018 razy)

Offline prociomen007

  • Użytkownik

# Marzec 13, 2012, 13:19:03
Może ktoś z użytkowników będzie widział bo nie mam pomysłu jak to zrealizować. Używam java + android. Do wyświetlenia openGL zastosowałem

GLSurfaceView widok = new GLSurfaceView(this);
setContentView(widok);


teraz chcę dodać dwie kolejne warstwy ImageView które miały by obsługiwać dotyk użytkownika a co za tym idzie orientację w świecie 3D. Wymyśliłem wiec że zastosuję taką konstrukcję:

Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/scrren_pad.bmp");
        ImageView image = new ImageView(this);
        image.setImageBitmap(bitmap);

        image.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

int action = event.getAction();

                                    //tu obsługa akcji

return true;
}

});

this.addContentView(image, new LayoutParams(wielkoscX,wielkoscY));

Mam jednak problem z umiejscowieniem takiego obrazka na ekranie zawsze przyczepia mi się do lewego górnego rogu. Czy jest sposób aby umiejscowić go w konkretnym miejscu tak aby obsługiwać touch tylko dla niego? Kombinowałem z marginesami co faktycznie przesuwało obrazek jednak touch obsługiwany był od rogu ekranu aż do końca obrazka a nie tylko w polu obrazka.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline deadeye

  • Użytkownik

# Marzec 13, 2012, 14:38:31
Włącz sobie designer widoku, wrzuć do niego RelativeLayout, ustaw sobie wewnątrz niego GLSurfaceView i ImageView. Możesz przypiąć ImageView do dowolnych krawędzi, przesuwać ImageView używając marginesów i obszar klikania będzie poprawny.

Offline prociomen007

  • Użytkownik

# Marzec 13, 2012, 15:15:31
Dzięki śliczne rzeczywiście pomogło mam jednak jeszcze jedno pytanie. Dodaję sobie dwa ImageView i na każdym sprawdzam sobie czy jest przyciśnięty tak jak widać na powyższym listingu. Niestety obsługuje mi się to tak że jak naciskam jeden imagview i równocześnie drugi to wykonywany jest tylko jeden ten który zostanie naciśnięty jako pierwszy. Chcę aby one działały nie zależnie czyli jedną ręką robię coś na pierwszej warstwie a druga w tym samym czasie na drugiej.

Offline Zielony

  • Użytkownik
    • Ghurund Engine

# Marzec 13, 2012, 20:12:08
Android standardowo nie obsługuje dotykania wielu kontrolek jednocześnie. Znacznie lepiej byłoby, gdybyś narysował UI  na oknie OpenGL, a dotyk obsłużył ręcznie nadpisując dispatchTouchEvent.