본문 바로가기

Android/Knowhow

android studio - 포토샵없이 material design의 앱 아이콘 쉽게 만들기 안드로이드 팀장님께서 좋은 정보를 공유해주셨다. 안드로이드 스튜디오에서 제공하는 Asset Studio를 이용해서 런처 앱 아이콘, 액션바 아이콘, 알림 아이콘을 손쉽게 만들고 저장할 수 있다. 포토샵 없이도 어느정도의 퀄리티를 출력할 수 있다. 게다가 안드로이드에서 권고하는 앱 아이콘 정책을 지킬 수 있다. 문서 아이콘 처럼 오른쪽 귀퉁이를 접은 모양도 지정할 수 있다. (Effect > dog ear) 앱 패키지의 리소스 폴더 우클릭 > 뉴 > Image Asset을 클릭한다. Asset Type을 클립아트로 지정하면 material design풍의 아이콘들이 무궁무진하게 제공된다. 패딩, 메인색, 배경색, 아이콘 모양을 커스텀하게 지정할 수 있다. 텍스트로도 아이콘을 만들 수 있다. 내가 좋아하는 .. 더보기
프로필 이미지를 동그랗게 출력하기 유저가 앨범에서 이미지를 선택하면 원형으로 다듬어서 출력해야 한다. 1차 구현- 리소스를 로컬에서 관리함- RoundedBitmapDrawable로 비트맵 리소스 원형 처리 ImageView 위젯에 bitmap 이미지를 출력하는 방법으로 1차 구현을 완료했다. 1234567891011121314 if (resultCode == Activity.RESULT_OK) { if (data != null) { Uri selectedImageUri = data.getData(); try { Bitmap bitmap = MediaStore.Images .Media.getBitmap( getActivity().getContentResolver() , selectedImageUri ); setRoundedProfileI.. 더보기
API의 content type이 application/x-www-form-urlencoded 일 때 사용자의 프로필 이미지를 서버에 저장해야 한다. raml에서 해당 API를 확인했더니 Content Type이 application/x-www-form-urlencoded 라고 되어있다. 사수님이 꼭 찾아보고 알고 있어야하는것이라고 했다. 구글링을 했더니 일목요연하게 정리된 것은 없다. 하지만 몇가지 단서를 얻을 수 있었다. POST로 데이터를 보낼 때의 표준 MIME type이다.key-value 형태로 인코딩된다.이 Content Type을 사용한다면 body 인코딩을 해야한다. 더보기
android Lollipop black image / 롤리팝에서 라운딩 이미지가 검정색으로 나올때 갤러리에서 선택한 이미지를 라운딩하여 프로필 사진으로 등록하는 기능을 구현중이다. 구글링해보니 별개의 Drawable 클래스를 만드는 등 복잡한 방법들이 난무하다. 분명 안드로이드라면 간단히 해결할 수 있는 객체가 지원될텐데.. 이상하다고 생각하여 안드로이드 개발자 웹에서 검색해보니 아래와 같이 좋은것이 있다.RoundedBitmapDrawable 깔끔하게 단 몇줄의 코드만으로 라운딩 이미지를 출력할 수 있다. 12345 private void setRoundedProfileImage(Bitmap bitmap) { RoundedBitmapDrawable result = RoundedBitmapDrawableFactory.create(getResources(), bitmap); result.setCircu.. 더보기
[selector] 버튼/텍스트뷰의 background와 textColor selector 설정 커스텀한 디자인의 버튼을 만들려고 한다. press 상태일 때 테두리, 배경, 텍스트 컬러가 모두 변경되어야 한다. 1. [X] TextView의 textColor와 backround 속성에 selector 넣기 12345Colored by Color Scriptercs 2. [X] TextView의 background 속성에 넣을 selector에 테두리, 배경, 텍스트 컬러 설정하기 12345678910111213141516171819202122232425262728293031 Colored by Color Scriptercs 3. [O] TextView를 RelativeLayout으로 감싼다. RelativeLayout에 clickable 속성을 준다.RelativeLayout의 background.. 더보기
fragment에서 onActivityResult() 받기 MainFragment에서 onActivityResult()가 호출되어야 하는데, MainActivity에서 onActivityResult()가 호출된다. - Dialog에서 fragment.startActivityForResult()를 호출할 수 없다. MainActivity의 lifecycle에 따라 동작하도록 되어있다. - 이벤트 버스를 만드려면 복잡하다. - Activity의 onActivityResult()에서 requestCode를 변환하고 Fragment의 onActivityResult()를 직접 호출하도록 했다. 정상 동작한다. 123456789//Activity의 onActivityResult() @Overrideprotected void onActivityResult(int reques.. 더보기
액티비티(프래그먼트) 간에 객체나 리스너를 공유하면 안된다. 서로 다른 패키지의 액티비티와 프래그먼트 간에 처리해야할 이벤트가 있어서 리스너와 static method로 구현했다. 하지만 액티비티 끼리는 인텐트를 이용해야한다. 안드로이드에서 인텐트를 적극 활용할 줄 알아야한다. 앱 컴포넌트(서비스, 브로드캐스트리시버, 컨텐트프로바이더, 액티비티)는 인텐트를 사용하자! 더보기
ScrollView의 height를 match_parent하기 ScrollView 의 속성인 fillViewPort에 true 값을 주면 화면의 세로 영역에 꽉 찬다. 더보기