Round Componet 만들기
Android/Tips 2015. 2. 4. 17:57 |배경 : ActionBar를 사용하려 했으나, 개발적 여건으로 Toolbar를 사용해야 했다.
Toolbar의 PopupMenu를 내 입맛에 맞게끔 Theme Style을 바꾸려고 했으나,
API 16, Jelly Bean을 지원해야 하다보니, API 21을 못 사용하게 되었다.
결론적으로 이차저차해서 Toolbar를 직접 만들고, PopupMenu도 만들어야 할 상황이.. ㅠㅠ
그러다가 Round Popup메뉴를 만들어야 할 상황...
결론...
Round Popup메뉴를 만드는 방법!!
ListView를 하나 만들고, 그 ListView를 둥글게 디자인 한 다음,
그 놈을 PopupWindow에 붙이면 됨!
즉, 모든 뷰를 만들고 그 뷰를 Draw할 때,
Path를 설정하여 자른다면.. 무슨 Component든 round rectangle을 만들수 있다는 의미,
또, 이놈을 PopupWindow에 붙인다면...
Round Popup Component도 가능하다는 말씀!
Path설정하여 Round Rectangle을 만드는 방법...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | final Path path = new Path(); final int round = 20; mListView = new ListView(context){ @Override protected void dispatchDraw(Canvas canvas) { canvas.save(); path.rewind(); // make round-rectangle path path.moveTo(round, 0); path.lineTo(getWidth()-round, 0); path.quadTo(getWidth(), 0, getWidth(), round); path.lineTo(getWidth(), getHeight()-round); path.quadTo(getWidth(), getHeight(), getWidth()-round, getHeight()); path.lineTo(round, getHeight()); path.quadTo(0, getHeight(), 0, getHeight()-round); path.lineTo(0, round); path.quadTo(0, 0, round, 0); path.close(); canvas.clipPath(path); canvas.drawColor(getResources().getColor(R.color.popup_menu_selector)); super.dispatchDraw(canvas); canvas.restore(); } }; |
'Android > Tips' 카테고리의 다른 글
자바 파일복사 코드와 성능 (0) | 2015.03.30 |
---|---|
ParentView에서의 Event를 ChildView에 전달하는 방법 (0) | 2015.03.24 |
[assert] 사용법 (0) | 2014.10.28 |
[lint] 사용하지 않는 String, 번역빠진 String 찾기 (0) | 2014.08.28 |
[TypedValue] DP, pixel간 변환 (0) | 2014.08.26 |