보통 디자이너 분들은 해당 다운로드 이미지, 공유 이미지,초록색 링 이미지 이렇게 주신다.
RelativeLayout을 사용하게 되면 만들기가 쉽지 않다.
기존에 RelativeLayout을 사용했을 때는 다운로드 이미지, 공유 이미지, 초록색 링이 포함된 다운로드 이미지 , 초록색 링이 포함된 공유 이미지 이렇게 받아서 작업을했다.
하지만 ConstraintLayout 을 사용했을 때 이런 문제점을 해결할 수 있었다. 물론 RelativeLayout 으로도 아마 가능할수도 있을지 모르지만 쉽게 떠오르지 않았다.
해당 이미지의 Layout 이다.
가로 세로의 각각 GuideLine 을 설정 한 후 각 뷰는 부모의 뷰에서 몇 dp 만큼 떨어진게 아니라 기준점이 GuideLine 이 되는 것이다.
쉽게 만들수 있다. 그리고 ConstraintGroup을 만들어서 referenceIds 에 뷰들이 GONE처리 되어야 하는 아이디들을 넣어 주면 된다.
group_quick_guide 를 찾아서 Visible Gone 처리를 해주면 참조한 뷰들이 모두 적용된다.
매우 편리하다!!ㅎㅎ
문제점 : 다국어 지원 앱
다국어 지원을 위한 라이브러리를 사용해서 앱을 실행할 때 다국어 지원 관련 셋팅을 하게 된다.
간체,번체의 경우 language 와 country 두가지 모두 사용해서 구분을 하게 된다.
하지만 지역별로 이벤트를 설정 할 경우 locale 지역 정보를 가져올때 시스템에 설정된 지역 정보가 아닌 앱에서 설정된 지역을 가져오기때문에 문제
해결 : Application Class 에서 다국어 관련 Locale 을 셋팅 하기 전 country 정보를 미리 SharedPreference 에 저장해 놓고 필요한 경우 가져 온다. 시스템 언어를 변경 할 경우 onConfigurationChanged 가 불리게 되어서 여기서 다시 지역 정보를 갱신 시켜 주어야 한다.
Application Class
@Override
public void onCreate() {
super.onCreate();
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.putString(getString(R.string.pref_key_system_country), Locale.getDefault().getCountry())
.apply();
LocaleChanger.initialize(getApplicationContext(), SUPPORTED_LOCALES);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.getLocales().get(0) != null) { //첫번째가 변경된 Locale 정보를 가진다.
PreferenceManager.getDefaultSharedPreferences(this).edit().putString(getString(R.string.pref_key_system_country), newConfig.getLocales().get(0).getCountry()).apply();
}
LocaleChanger.onConfigurationChanged();
}
Channel 생성 시 IMPORTANCE 설정에 따라 알림이 다르다.
NotificationManager.IMPORTANCE_HIGH :소리 및 팝업 (헤드업 알림)
NotificationManager.IMPORTANCE_DEFAULT : 소리
NotificationManager.IMPORTANCE_LOW : 소리 없음
NotificationManager.IMPORTANCE_MIN : 소리 및 시각적 알림 없음