開発初心者の初投稿です。よろしくお願い致します。

現在,OpenGLを用いて,2つのImageView間をつなぐ直線を引くプログラムを作成しています。View間に直線を引く方法は分かったのですが,次段階としてViewを動かしてもView間が線でつながっている表現を行いたかったのですが,現状のコードではViewを移動させると,Viewの表示範囲を超えた段階でViewが隠れてしまいます。

下記のコードに対して,問題点をご指摘いただければ幸いです。

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff00ff">

    <android.opengl.GLSurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/glview1">
    </android.opengl.GLSurfaceView>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/droid1"
        android:layout_marginTop="158dp"
        android:src="@drawable/ic_launcher"
        android:layout_gravity="center" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/droid2"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_launcher" />


</FrameLayout>

 public class ClearActivity extends ActionBarActivity implements View.OnTouchListener {

      private GLSurfaceView mGLSurfaceVIew;
      private ClearRenderer mClearRenderer;

      private ImageView droid1;
      private ImageView droid2;

      private int droid1_LocalX;
      private int droid1_LocalY;

      private int droid2_LocalX;
      private int droid2_LocalY;

      private int screenX;
      private int screenY;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          mClearRenderer = new ClearRenderer();

          setContentView(R.layout.activity_clear);
          mGLSurfaceVIew = (GLSurfaceView)findViewById(R.id.glview1);
          mGLSurfaceVIew.setRenderer(mClearRenderer);
          mGLSurfaceVIew.getHolder().setFormat(PixelFormat.TRANSLUCENT);

          droid1 = (ImageView)findViewById(R.id.droid1);
          droid2 = (ImageView)findViewById(R.id.droid2);
          droid1.setOnTouchListener(this);
          droid2.setOnTouchListener(this);

      }

      @Override
      protected void onStart() {
          super.onStart();

      }

      @Override
      onWindowFocusChanged(boolean hasFocus){
            super.onWindowFocusChanged(hasFocus);
          /*----------Viewの座標をもとに,直線の視点終点を設定------------*/
      setVertex(--------------);
      }

      @Override
      public boolean onTouch(View v, MotionEvent event) {
          return false;
      }

  class ClearRenderer implements GLSurfaceView.Renderer {

      public void onSurfaceCreated(GL10 gl, EGLConfig config) {

          gl.glEnable(GL10.GL_ALPHA_TEST);
          gl.glColor(1.0f, 1.0f, 0.0f, 1.0f);

          vertex[0] = 1.0f;
          vertex[1] = 0.0f;
          vertex[2] = 0.0f;

          vertex[3] = 0.0f;
          vertex[4] = 0.0f;
          vertex[5] = 0.0f;

      }

      public void onSurfaceChanged(GL10 gl, int w, int h) {
          gl.glViewport(0, 0, w, h);
      }

      public void onDrawFrame(GL10 gl) {

          gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

          gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
          gl.glVertexPointer(3,GL10.GL_FLOAT,0,makeFloatBuffer(vertex));
          gl.glDrawArrays(GL10.GL_LINE_LOOP,0,2);
      }

      //Floatバッファの生成
      public static FloatBuffer makeFloatBuffer(float[] arr) {
          ByteBuffer bb= ByteBuffer.allocateDirect(arr.length * 4);
          bb.order(ByteOrder.nativeOrder());
          FloatBuffer fb=bb.asFloatBuffer();
          fb.put(arr);
          fb.position(0);
          return fb;
      }

      public  void setVertex(float x1, float y1,float x2, float y2){
          vertex[0] = x1;
          vertex[1] = y1;
          vertex[3] = x2;
          vertex[4] = y2;
      }

      private float[] vertex = new float[6];
}