반응형
View 크기가 변할 때 진입하는 리스너 만들기
- 가로의 크기는 지정을 해두고 해당 크기를 읽어와 세로크기에 지정해서 정사각형으로 만듦
//레이아웃 변경 리스너 선언
ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener;
//레이아웃 변경 리스너 생성
onGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//레이아웃 구조
//LinearLayout linearCenter(가로는 xml에서 크기 지정, 세로는 아래에서 계산후 적용)
// └ View viewCenter(가로, 세로 match_parent)
//지정된 가로크기를 구한 다음 세로 크기를 동일하게 지정하여 정사각형 만들기
int centerWidth = viewCenter.getWidth();
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)linearCenter.getLayoutParams();
params.height = centerWidth;
linearCenter.setLayoutParams(params);
//리스너 삭제
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
viewCenter.getViewTreeObserver().removeGlobalOnLayoutListener(onGlobalLayoutListener);
} else {
viewCenter.getViewTreeObserver().removeOnGlobalLayoutListener(onGlobalLayoutListener);
}
}
};
//레이아웃 변경 리스너 등록
viewCenter.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener);
반응형
'안드로이드' 카테고리의 다른 글
Android EditText Enter 이벤트 처리 (0) | 2021.11.20 |
---|---|
Android View Binding(리소스의 id있는 항목들의 변수 자동 생성) (0) | 2021.11.20 |
Android 웹뷰(WebView) 사용할 수 없음 수정하기 (0) | 2021.11.20 |
Android Path(파일경로), Uri 간의 변환 (0) | 2021.11.20 |
Android 카메라 플래시 제어하기 (0) | 2021.11.20 |
최근댓글