전체 글 (56) 썸네일형 리스트형 [Android] Canvas.drawText() 여러줄 그리기 getString() 으로 가져온 문자열이 있다. '\n' 이스케이프문자도 분명 들어가있었는데 drawText() 했을 때 한 줄로 출력되는 현상이었다. 해결방법 Parameters text : 이스케이프문자가 포함된 출력할 문자열 Canvas : onDraw() 의 Canvas 참조 Paint : 전역 변수 참조(텍스트 스타일) x : 텍스트를 그릴 x 좌표 y : 텍스트를 그릴 y 좌표 private void drawTextMultiline(String text, float x, float y, Canvas canvas, Paint paint) { String[] lines = text.split("\n"); for (String line : lines) { canvas.drawText(line, x.. [Android]SeekBar 커스텀하기 두번째 찾아보게 돼서 필수요소만 정리하기로 했다. https://www.tutorialsbuzz.com/2019/09/android-styling-seekbar-thumb-and-progressTrack.html Android Styling SeekBar Thumb and Progress Track Android Styling SeekBar Thumb and Progress Track , Android Custom Seekbar www.tutorialsbuzz.com 여기 글 보고 실습한 걸 소개하는 즈음이다. 만들고자 한 것. 디자인으로 받은 그라데이션 프로그레스(Progress)에 단색 배경(Track), 그라데이션 끝색이 반영된 Thumb 1. Thumb 만들기 - Ripple 의 color 속성은.. [Android] 라이브러리 급의 커스텀뷰 만들기 프로젝트(RulerPicker) 일하다가 자 형태의 눈금 스크롤이 필요했다. 라이브러리를 쓸까 하다가 좀 찾아보니 원하는대로 반영되는걸 찾다가는 스트레스받을게 뻔해보여서 까짓거 걍 만들기로 했다. 근데 만들다보니 꽤 잘 만들어지는게 아닌가? 그리 복잡하지도 않고, 라이브러리급으로 만들어서 배포해봐야겠다 싶었다. 작업기간 : 약 2일 조건 : - 가로스크롤만 반영한다. - 1 마다 눈금 하나를 그린다. - 5 마다 긴 눈금 하나를 그린다. - 최소/최대값을 정할 수 있어야 한다. - 콜백으로 변한 값을 넘길 수 있어야 한다. 결과물 이미지는 아래와 같다. 작업순서 1. 커스텀뷰 특성 정리 뭔가 만들려면 이해해야 한다. 해당 'RulerPicker'는 - 어느 간격 당 눈금을 그릴지 정의해야 한다. - 간격 당 어느정도 값인지 정의해야 .. [Android] 진동컨트롤(Vibrator) https://developer.android.com/reference/android/os/Vibrator Vibrator | Android Developers developer.android.com 자 형태의 커스텀뷰를 만들고, 눈금을 한 칸 이동할 때마다 진동효과를 주고 싶었다. 커스텀뷰는 콜백으로 칸이 이동될 때마다 정수형 값을 넘겨주는 구조였다. 값계산과 렌더링이 모두 처리된 다음 콜백으로 넘겨주는 것이기 때문에 View 가 아닌 Activity 에 진동관련 코드를 넣었다.(역할분담) 1. onCreate 이후에 Vibrator 객체를 만든다. private Vibrator vibrator = null; ... @Override protected void onResume() { super.onRe.. [Android] 커스텀 뷰, 원형 프로그레스 구현기 원형으로 생긴 프로그레스(그림과 다르게 진행정도에 따라 한 칸씩 채워지는 효과)를 커스텀 뷰로 구현할 일이 생겼다. 기존 라이브러리를 써도 어찌저찌 되겠지만 변형이 많이 생길수도 있는 부분이라서 커스텀으로 구현해놓는게 속편하겠다고 판단했다. 1. 원에서 막대의 각 위치를 구하기 위한 각도 계산 정의 원의 중심을 기점으로 반지름과 프로그레스 막대의 길이가 정의됐다고 했을 때 반지름 = r 막대의 길이 = h 라고 하겠다. 여기서 radian 의 개념이 필요한데, degree 단위가 평소에 쓰는 60분법, radian 단위는 반지름 대비 호의 길이인 호도법이다. 반지름 대비 호의 길이에 따른 각이라서 호도법이라 한다. 만약 반지름과 특정 구간의 호 길이가 같다면 1 radian 이 된다. 서로 변환하는 식은.. [Firebase] Firestore 보안 규칙 이해하기 https://unknown-alchemist.tistory.com/51 우선 파이어스토어는 위처럼 생긴 json문서 트리다. 그런데 이번에 제대로 작업을 하려고 하니 보안규칙이 또 헷갈렸다. 이번엔 완전판 느낌으로 정리해보려 한다. 사실은 크게 두 가지만 알면 된다. 문법이야 딱보면 알기 때문에 match문을 어떻게 구조적으로 활용해야 하는지, 조건으로 뭘 걸어야 제대로 걸어야 하고 각 키워드가 무슨 의미인지! 1. match 문의 의미 자, 아래 코드가 프로젝트단위의 파이어스토어의 어떠한 문서에 대한 트랜잭션도 조건없이 허용하겠다는 코드다. service cloud.firestore { match /databases/{database}/documents { allow read, write : if t.. [Flutter] 권한 확인 및 제어하기 이전 글에서 봤다시피 BLE 를 쓰려고 하는데, 안드로이드 기준(iOS 는 실행도 안해봄 ㅜㅜ)으로 위치권한과 주변기기 스캔 권한이 허용돼있어야 한다. 1. permission_handler 패키지 사용 또 의존해야 한다. 해당 라이브러리를 의존한다. permission_handler: ^version 부분이다. dev_dependencies: flutter_test: sdk: flutter flutter_reactive_ble: ^5.0.2 permission_handler: ^10.0.1 2. async import 사용자의 응답을 기다려야 하다보니 해당 동작은 async await 이 빠질 수 없다. await 이 쓰인 부분은 이하 코드를 진행하지 않고 기다리는데, 그러려면 쓰이는 블럭이 async.. [Flutter] BLE 스캔/연결/데이터받기(flutter_reactive_ble 사용) 하나 정확하게 짚고 넘어가겠다. 안드로이드나 IOS 네이티브처럼 플러터 플랫폼에는 정식 블루투스 패키지가 '없다' devpub 같은 곳에 올라와있는 라이브러리를 의존하는 것이 유일한 방법이다. 이 부분때문에 더 이상 플러터는 배우지 않으려고 한다. 차라리 둘 다 네이티브를 할 줄 아는 것이 시간과 돈과 퀄리티를 모두 챙길 수 있는 유일한 길이다. 다만 이 글은 누군가에게 도움될 수 있으므로 써둔다. 1. 패키지 의존성 붙이기 flutter ble package 검색해보면 추천하는 것들이 나올텐데 flutter_reactive_ble 를 선택했다. lib/pubspec.yaml 파일에 들어간다. dev_dependendies: 부분에 flutter_test: sdk: flutter 부분은 이미 써있을 것이.. 이전 1 2 3 4 ··· 7 다음