2012-05-25 3 views
0

두 개의 ImageViews로 Activity를 생성하고 있습니다.레이아웃이 onTouch() 내에서 작동하지 않습니다.

첫 번째 ImageView는 시작시 화면의 일부를 차지하며 첫 번째 이미지를 터치하고 그 위에 TOP의 이미지를 터치하는 영역 주위의 자르기가있는 다른 이미지 뷰를 표시하려고합니다.

는 클래스 :

public class DetectEyesActivity extends Activity implements OnTouchListener { 
private ImageView imgView; 
private Bitmap imgBitmap; 

private ImageView touchView2; 
private Bitmap temp; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.detecteyeslayout); 

    Intent intent = this.getIntent(); 
    byte[] image = intent.getByteArrayExtra("Image"); 

    imgView = (ImageView) findViewById(R.id.detectImageView1); 
    touchView2 = (ImageView) findViewById(R.id.detectImageView2); 

    imgBitmap = BitmapFactory.decodeByteArray(image, 0, image.length); 
    imgView.setImageBitmap(imgBitmap); 

    temp = Bitmap.createBitmap(imgBitmap, 200, 200, 200, 200); 
    //touchView2.setImageBitmap(temp); 

    imgView.setOnTouchListener(this); 
} 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int y = (int)event.getY(); 
    int x = (int)event.getX(); 

    temp = Bitmap.createBitmap(imgBitmap, 200,200, 200, 200); 
    touchView2.setImageBitmap(temp); 
    touchView2.setVisibility(0); 
    touchView2.bringToFront(); 
    touchView2.layout(x-200, y-200, x-30, y-30); 

    return true; 
} 

}

레이아웃 : 나는

touchView2.setImageBitmap(temp); 

내부 onTouch()를 호출 할 때

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/detectImageView1" 
     android:layout_width="400dp" 
     android:layout_height="400dp" /> 

    <ImageView 
     android:id="@+id/detectImageView2" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:visibility="gone" /> 
</LinearLayout> 

그러나보기는 초기 이미지 아래에 그려집니다 레이아웃에. 하지만 onCreate() 내부에서 호출하면 초기 이미지 위에 그려지는 것입니까?

왜 이런 일이 발생하며이 문제를 어떻게 해결할 수 있습니까?

+0

보기가 포함 된 레이아웃 유형은 무엇입니까? 질문은'LinearLayout' 태그가 붙어 있지만, 제공 한 XML은 두 개의 이미지만을위한 것입니다. – Devunwired

+0

나를 용서해주십시오 ... 지금 업데이트되었습니다. – MobileCushion

답변

0

나는 당신의 질문을 이해하기 때문에, 당신은 하나의 이미지가 다른 이미지 위에 겹쳐지기를 원합니다. LinearLayouts는 수평선 또는 수직선으로 자식을 표시합니다. 여러 어린이가 같은 공간을 차지할 수 없기 때문에 이것은 좋은 ViewGroup이 아닙니다. 나는 Relative 또는 Frame Layout을 시도 할 것이다.

또한 처음에는 두 번째 이미지의 가시성을 gone으로 설정 했으므로 첫 번째 이미지가 그려지는 것이 아니라 onTouch에서 setVisibility으로 전화 할 때까지 두 번째 이미지가 전혀 그려지지 않습니다. .

관련 문제