본문 바로가기
반응형

Tips38

[Tistory] 새 글 아이콘이 회색이 됐을 때 주황색으로 원상복구하기 회색 새 글 아이콘 원상복구하기 어제 새 토이프로젝트 관련 카테고리를 추가하다가 카테고리 설정을 이것저것 건드려봤는데 지금 보니 아래 사진처럼 새 글 표시가 죄다 회색으로 바뀌어있었다. 카테고리 설정을 변경하면 새 글 아이콘이 아래의 주황색 아이콘에서 https://t1.daumcdn.net/tistory_admin/blogs/image/category/new_ico_5.gif 아래 링크의 회색 아이콘으로 변경되어버린다고 한다. https://t1.daumcdn.net/tistory_admin/blogs/image/category/new_ico_1.gif 다른 블로그에선 이미지를 새로 업로드하거나 CSS를 통해 아이콘을 수정했지만, 난 다른 속성들은 그대로 냅두고 img의 src만 주황색 아이콘 URL로.. 2022. 6. 1.
[Android] RecyclerView 스크롤 비활성화 Intro Android에서 RecyclerView를 사용할 때 스크롤을 비활서화하고 싶을 때가 있다. 하지만 기존의 스크롤 활성화 여부를 설정하는 setLayoutFrozen이 Deprecated 되었는데, 이제는 아래와 같은 방법으로 스크롤 활성화 여부를 변경할 수 있다. 스크롤 비활성화 recyclerView.suppressLayout(true) 스크롤 활성화 recyclerView.suppressLayout(false) suppressLayout을 true로 설정해두면 notifyXXXChanged로 인한 Layout 업데이트 작업이 일어나지 않게 된다. 따라서 데이터가 변경되어야 할 경우 잠깐 false로 설정했다가 notify 후 true로 바꿔주면 된다. recyclerView.suppres.. 2022. 5. 17.
[Android] Vibrator 클래스로 진동 제어하기 Intro 진행중인 프로젝트에서 진동 기능을 사용하게 되어 개발 중 조사한 내용을 정리해봤다. Vibrator 인스턴스 생성 진동을 제어하기 위한 권한 설정 코드이다. vibrator = getSystemService(Vibrator::class.java) 클래스로 getSystemService를 호출하면 SDK 버전에 관계없이 Vibrator 인스턴스를 반환해준다. Android API 31부터는 Context.VIBRATOR_SERVICE가 Deprecated 되어서 String으로 받아오고싶다면 아래와 같이 처리해야 한다. vibrator = if(Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { getSystemService(Context.VIBRATOR_SE.. 2022. 5. 16.
[Android] currentTimeMillis로 절대시간 구하기 Intro 앱 개발 도중 빌드 시간을 빌드번호로 만들기 위해 System.currentTimeMillis로 받은 현재 시간을 SimpleDateFormat 클래스를 통해 20220503101100과 같은 형식으로 변환해주는 코드를 작성했다. //BuildConfig.BUILDTIME: 빌드 시 호출된 System.currentTimeMillis() 결과값 binding.buttonTest.text = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()) .format(BuildConfig.BUILDTIME) 그런데 이 코드를 테스트폰과 AVD에서 실행시켰을 때, 둘의 현재 시간이 달라 빌드번호가 다르게 나왔다. SimpleDateFormat이 절대시간이 아닌.. 2022. 5. 3.
[Spring Boot] Infinite recursion (StackOverflowError) 오류 날 때 Intro Spring Repository에서 객체를 조회하는 도중에 아래의 에러가 발생했다. 2022-02-23 10:44:22.914 ERROR 58164 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion .. 2022. 2. 23.
[Android] Binding 사용 시 모든 요소가 아무 동작도 안할 때 Binding 사용 시 모든 요소가 아무 동작도 안할 때 viewBinding 사용 시 간혹 OnClick, OnCheckChange 등의 이벤트들이 하나도 동작하지 않을 떄가 있다. binding 사용 후 binding을 통해 이벤트를 등록했으면 그걸 보여주도록 설정을 변경해야 하는데, 기존 코드를 그대로 놔둬서 오류가 발생하는 것이었다. Activity의 경우 setContentView의 인자값을 binding.root로 변경해주면 된다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setCon.. 2022. 2. 9.
[Android] 오디오 모드 변경 및 볼륨 조절 권한 설정 소리 설정을 변경하기 위해 Write Settings 권한이 필요하다. AndroidManifest.xml Write Settings는 시스템 권한이라 앱 실행 시 자동으로 권한을 묻는 창이 뜨지 않기 때문에 설정 창을 띄워서 사용자가 직접 권한을 부여하도록 해야 한다. MainActivity.kt private fun requestWriteSettingsPermission() { if(!Settings.System.canWrite(this)) { Toast.makeText(this, "알림음을 켜기 위해 권한 설정이 필요합니다.", Toast.LENGTH_SHORT).show() startActivity(Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)) } .. 2022. 2. 7.
[Front-End] Prettier 단축키 보호되어 있는 글 입니다. 2022. 1. 27.
[Android] Ringtone 재생 및 목록 가져오기 Ringtone 재생 val ringtoneUri: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM) val ringtone: Ringtone = RingtoneManager.getRingtone(context, ringtoneUri) ringtone.play() ringtoneUri 자리에 아래의 Ringtone 목록에 조회된 Uri로 대체할 수 있다. Ringtone 목록 가져오기 RingtoneManager(context).cursor.run { Log.d(TAG, "Ringtones: ") while(moveToNext()) { Log.d(TAG, "${getString(RingtoneManager.TITLE_COLUMN_INDEX).. 2022. 1. 24.
반응형