현재 이미지 자르기 기능을 구현하고 있습니다.

사용자가 선택하는 부분을 알 수 있도록 사각형 부분은 원래 색이 나와야하고

바깥쪽은 어두침침한 색이 나와서 구분을 해줘야합니다.

 

device-2012-12-19-143555.jpg

요렇게 말이죠.

디자이어 진저브레드 입니다.

 

 

그런데 갤넥에서는 그렇게 나오지 않습니다.

전체가 어두침침하게 나와버려요.

SDK버그는 아닌거 같습니다. 왜냐하면

device-2012-12-19-143541.jpg

 

 

갤넥 에뮬레이터에서는 잘 나오거든요.

 

 

아래는 이미지뷰를 상속받아서 만든 onDraw() 메소드 입니다.

갤넥에서는 왜 이럴까요...혹시 잘못된게 있을까요?

 

 @override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //이미지뷰의 전체 영역    
    getDrawingRect(viewRect);

    //작은 사각형 영역이 될 부분
    getDrawingRect(smallRect);
    smallRect.left += 100;
    smallRect.right -= 100;
    smallRect.bottom -= 200;
    smallRect.top += 200;

    // 전체 영역에 뿌려줄 페인트를 모두 어두침침한 색으로 만듬
    mNoFocusPaint.setARGB(150, 50, 50, 50);

    // 전체 영역에서
    canvas.clipRect(viewRect);
    // 작은 영역을 제외하고
    canvas.clipRect(smallRect, Region.Op.DIFFERENCE);
    // 모두 검은색으로 칠해버림
    canvas.drawRect(viewRect, mNoFocusPaint);
}


 소스 보시면 아시겠지만 Region.Op.DIFFERENCE부분이 핵심인데, 이거
말고도 다른 옵션도 (union, difference 등등)
요상하게 적용이 됩니다.