반응형
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 |
최근댓글