안드로이드 이미지뷰 setVisibility


안드로이드 스튜디오로 어플 작업중입니다. 이미지뷰를 다루는데 문제가 있어 질문드립니다. 특정 조건일때만 이미지뷰가 나타나고, 그렇지 않으면 이미지뷰가 보이지 않게 하고 싶은데 그 부분 동작이 되지 않습니다. 스레드 문제 때문에 새 스레드와 핸들러를 작성했고, 핸들러가 작동하는거 같긴 하나 이미지뷰 부분은 동작하지 않습니다. onCreate에서 setVisibility(View.INVISIBLE)로 초기 설정은 보이지 않게 해두었고, 다른 메소드 내부에서 조건에 맞으면 setVisibility(View.VISIBLE)이 되게끔 하고 싶습니다. 아래는 코드 일부입니다. 혹시 틀린 부분이 있거나 어떻게 고쳐야 되는지 아시면 알려 주시면 감사하겠습니다ㅠㅠ

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
    img_input = inputFrame.rgba();

    //Core.flip(img_input, img_input, 1);

    if ( img_result != null ) img_result.release();
    img_result = new Mat();

    int[] point;

    detect(cascadeClassifier_face,cascadeClassifier_eye, img_input.getNativeObjAddr(), img_result.getNativeObjAddr());

    point = backPnt();
    Log.d(TAG, "point : " + point[0] + " " + point[1]);

    new Thread(new Runnable() {
        @Override
        public void run() {
            runOnUiThread(new Runnable(){
                @Override
                public void run() {
                    int face = faceCnt();
                    Log.d(TAG, "face : " + face);

                    if(face != 0){
                        Log.d(TAG, "보임");
                        pin.setVisibility(View.VISIBLE);
                    }
                    else{
                        Log.d(TAG, "안 보임");
                        pin.setVisibility(View.INVISIBLE);
                    }

                }
            });
        }
    }).start();

    pin.setX(point[0]);
    pin.setY(point[1]);

    return img_result;
}

pin이 이미지뷰고, face가 특정 조건입니다. face가 0이 아닐때 VISIBLE, 0이면 INVISIBLE이 되게끔 하고 싶습니다.

  • 2017년 08월 07일에 작성됨

조회수 185


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close