분류 전체보기84 웹뷰 등에서 OnTouchListener 적용하기 일부 View를 사용할 때 ClickListener가 적용되지 않는 경우가 있습니다. Webview 같은경우, 메소드에 setOnClickListener가 존재하지만, 이를 적용해도 아무 작업도 할 수 없습니다. View와 터치로 상호작용 할 경우 일부 UI의 Visible을 조절한다던가 하는 작업이 필요할 때 Listener를 붙여주어야 가능한데 난감한 경우라고 할 수 있습니다. 하지만, 간단한 방법으로 구현할 수 있으니 걱정하지 않으셔도 됩니다. OnTouchListener를 implements 해주는것으로 OnTouchListener를 사용할 수 있습니다. public class SomeFragment extends Fragment implements View.OnTouchListener { Vie.. 2020. 1. 29. 리사이클러뷰 역순으로 출력하기 리사이클러뷰를 사용할 때, 아이템을 역순으로 출력해야 하는 경우가 있습니다. SQL등에서 가져온 아이템을 역순으로 뽑아서 출력하는 방법도 있지만 Layoutmanager를 이용하면 아주 간단하게 역순으로 출력할 수 있습니다. LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); mLayoutManager.setReverseLayout(true); mLayoutManager.setStackFromEnd(true); recyclerView.setLayoutManager(mLayoutManager); 2020. 1. 29. Sound Assistant ::: 블루투스 이어폰의 볼륨이 너무 클 때 최근 블루투스 이어폰을 하나 구매했습니다. 가격도 그렇도 만듬새도 나쁘지 않은 아이템이라 굉장히 잘 사용할 것 같은 느낌이 들었는데 이어폰 자체의 음량이 너무 크다는 문제점이 하나 있었습니다. 평소 음악의 볼륨을 빵빵하게 틀어놓지 않기때문에 최저볼륨으로도 굉장히 크게 들리는 음량을 어떻게 해야 하나, 음량조절을 하는 앱을 하나 만들어서 써야하나 고민하던 와중에 찾아보니 앱이 이미 있습니다. 삼성의 Sound Assistant입니다. 윈도우에서 프로그램의 음량을 개별로 조절할 수 있는것과 동일하게 개별앱의 음량조절도 가능하고 음량 조절 버튼과 슬라이더에서 음량이 조절되는 간격 설정 또한 할 수 있습니다. 벨소리나 알림, 알람음을 이어폰에서만 나게 할 수 있는 기능도 있습니다. 블루투스 이어폰의 음량을 좀 .. 2019. 12. 5. Marlin 펌웨어 값 변경 후 업로드시 적용이 되지 않는 경우 대부분의 3D 프린터는 오픈소스 펌웨어인 Marlin 펌웨어를 사용합니다. 대부분의 3D 프린터가 사용하는 이 펌웨어는 오픈 프로젝트인 RepRap에서 만들어낸 펌웨어입니다. 아두이노를 제어보드로 사용하는 3D 프린터는 C언어 기반의 펌웨어를 가지고 있는데 수많은 라이브러리로 구성되어 있는 이 복잡하고 숨막히는 펌웨어에서 수정할 때가 있는것은 단 두가지 뿐입니다. Configuration.h와 Configuration_adv.h 단 두개만 수정할 수 있으면 되고, 다른것은 단 하나도 몰라도 됩니다. 펌웨어의 사용법같은경우에도 Marlin 펌웨어의 홈페이지 에서 친절히 설명해주고 있습니다. 3D 프린터는 3차원 STL 도면을 가지고 G-code로 변환하여 이를 그대로 인쇄하게 되는데 X,Y,Z축그리고 익스.. 2019. 12. 4. 오토레벨링, 노즐 클리닝을 포함한 custom Start G-code 3D printer의 기기제어, 인쇄는 모두 G-code라는 것으로 이루어 집니다. 슬라이서를 통해서 슬라이싱 하게 되면 출력물을 인쇄하기 위한 노즐의 경로 좌표계, 압출량 등이 G-code로 저장되고, 해당 G-code를 USB 시리얼 통신으로 받거나 SD 카드에 저장된 *.gco 파일을 통해서 인쇄를 하게 됩니다. 이때 출력물을 출력하기 위한 G-code는 모두 다르게 되지만, 시작과 끝에는 Start G-code와 End G-code가 붙게되는데 보통은 default로 설정된 값을 사용하지만 임의로 수정 해 줄 수가 있습니다. default로 설정된 값을 사용하면 문제점이 몇가지 있습니다. 1. 보통 히팅베드 가열이 끝나기까지 기다린 후 핫엔드가 가열되어 시간이 오래걸림 2. 기본 start G-c.. 2019. 11. 9. 아두이노 1.8.10 버전 업데이트 이후 12864 LCD의 오류 사용하던 3D 프린터의 펌웨어를 Marlin 1.1.9 버전으로 업데이트 하기로 했습니다. 해당 과정에서 필요한 아두이노 프로그램의 최신버전업이 떴길래 별 생각없이 1.8.10 버전으로 업데이트 한 이후, 3D 프린터의 펌웨어를 다시 업로드 하였습니다. 그런데 업로드 이후 3D 프린터의 LCD 화면이 이렇게! 되었습니다. 해당 펌웨어의 문제인가 싶어, 기존에 사용하던 펌웨어로 롤백하여 업로드했지만 똑같은 현상이 발생하였습니다. 사용하는 LCD 컨트롤러는 12864 LCD 이고, 아두이노 업데이트 전에는 어떤 이상도 없었습니다. 해외의 포럼을 살펴보니, 아두이노 업데이트 이후, 펌웨어 업로드를 진행한 사람들의 대부분이 해당 문제를 겪는것을 확인했습니다. 해당 문제의 해결방법은 아래와 같습니다. 1. 아두이.. 2019. 11. 4. 화면크기에 따라 일정한 비율로 크기가 자동조절되는 TextView 모바일 기기, 특히 안드로이드 기기들은 다양한 화면크기와 해상도를 가지고 있습니다. 따라서 앱의 UI를 디자인할 때 각 요소들의 사이즈를 주의해서 설정 해 주어야 합니다. 버튼이나 이미지와 같은 UI 오브젝트에 px 이나 inch 값을 주게되면 기기마다 다른 크기로 보이게 되기 때문에 기기에 무관하게 동일한 크기로 보일 수 있도록 dp 값을 사용하는것이 기본이 된지 오래되었습니다. 같은 dp 값을 가지고 있다면 해당 오브젝트는 어떤 기기에서도 거의 동일한 크기로 보이게 되는데 기기의 화면크기가 모두 다르다는데서 또다른 문제가 다시 한번 발생합니다. 예를 들어 가로 900dp 세로300dp의 오브젝트를 배치한다고 가정해 보면, 작은 스크린 사이즈의 기기에서는 해당 오브젝트가 잘리게 되기 때문입니다. 특정한.. 2019. 7. 13. Manifest merger failed : Attribute application@appComponentFactory build.gradle 파일에서 implementation 된 일부 구글 라이브러리들의 버전을 업데이트 해 준 뒤 해당 오류가 발생되며 빌드가 되지 않는 경우가 발생하였습니다. 제 경우에는 Firebase라이브러리 중 일부를 18.0.0으로, Crashlytics 라이브러리를 2.10.1로 업데이트 해준 뒤 발생하였는데요 빌드 시 오류의 내용은 아래와 같습니다. Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-.. 2019. 6. 28. APK 빌드시 Lint found fatal errors while assembling - Android Studio에서 APK 파일을 빌드할 경우 Lint 에러가 발생하는 경우가 있습니다. 보통 에러 발생 메시지는 아래와 같습니다. Lint found fatal errors while assembling a release target. To proceed, either fix the issues identified by lint, or modify your build script as follows: android { lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when er.. 2019. 6. 19. Uri 로부터 파일의 실제경로 구하기/외장SD카드의 경로 얻기 안드로이드 앱을 만들다보면 외부의 다운로드 링크나 인터넷 주소가 아니라 기기 내부의 파일을 uri를 사용하여 이용하는 경우가 있습니다. Content Provider를 이용해서 파일에 접근하는 경우에 uri로 해당 파일을 얻게 되는데 보통 아래와 같이 uri를 얻게 됩니다. content://authority/path/id 문제는, Content Provider에서 정보를 읽어온뒤 사용해버리거나 바로 편집하는 경우에는 상관없으나 이때 얻어진 uri를 가지고 Content Provider를 거치치 않고 직접 접근 하기위한 경로를 얻기위해서 Uri.getpath()를 시도하면 /docume/FILE:1234 와 같은 경로가 반환되게 됩니다. 사진파일이나 음악파일등, 프로바이더로 접근한 뒤에 나중에 실제경로로.. 2019. 4. 3. 이전 1 ··· 4 5 6 7 8 9 다음