accept 보통 작업을 하다 보면, Map를 사용하게 되면, SparseArray 더욱 좋은 Performance를 가지고 있으니 바꾸라는 Lint가 뜬다. SparseArray는 Primitive type의 키를 가질때, HashMap 으로 대체될 수 있다. SparseArray 가 가지는 장점으로는 HashMap 과는 달리 내부에서 객체를 생성하지 않아, 더 높은 퍼포먼스를 가진다고한다. 그렇게 때문에 Wrapper 클래스로 boxing 할 필요가 없어 또한 이점을 가진다. SparseArray의 주 목적은 객체 대신 객체를 키로 사용하여 메모리를 절약한다는 것이다. 단점으로는 안드로이드에서만 동작하기 때문에 안드로이드에 높은 의존성을 가진다. HashMap은 아래와 같이 변환되어 사용될 수 있다...
보통 안드로이드 개발을 하다보면, 사용자가 터치해야 하는 영역을 커스텀하여 개발하는 일이 잦다. 보통 Selecter 같은 것을 활용하여, background(후경)에 적용하여 해결하지만, 가끔 하위 뷰에 터치 이벤트가 가려지는 경우가 있다. 그래서 appcompat-v7 라이브러리 에서 터치 이벤트를 쉽게 적용할 수 있도록 ?attr/selectableItemBackground, ?attr/selectableItemBackgroundBorderless 등 제공하는 속성을 이용하여 Foreground(전경)에 넣어주게 되면 터치 이벤트가 뷰의 가장 앞에 위치하게 되어 해결할 수있다. 참고로 Foreground 속성은 FrameLayout에서 제공하며, 이를 상속 받는 모든 것들에 적용할 수 있습니다.
List A와 List B에서 같은 객체가 존재하는지 어떤 방식으로 비교 할 수 있을까? premitive 타입이라면 그저 Contains 메소드를 사용하여 비교하면 되겠지만,Reference 타입이라면 T class에서 equals 메소드를 오버라이드해서 사용하면 된다. 예시 )ExContentsVO클래스의 mExId는 유니크한 아이디 값을 가지게 되어있다.public class ExContentsVO { private int mResId; private int mExId; private String mExName; private int mExTime; private int mRestTime; private boolean mChecked; public int getResId() { return mRes..
FLAG_ACTIVITY_BROUGHT_TO_FRONT시스템에서 설정하는 값이며, 같은 task에 Activity가 존재할 경우에 Activity의 실행모드가 singleTask이면 자동으로 설정됨 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET테스크가 리셋될 때 플래그가 사용된 액티비티부터 위의 액티비티가 모두 삭제됩니다.예) ABCD -> B call - > AB FLAG_ACTIVITY_RESET_TASK_IF_NEEDED플래그의 설정에 의해 리셋이 이루어지게 됩니다.시스템에 의해 홈에서 사용자에 의해 백그라운드에 있던 태스크가 포그라운드로 전환될때에 항상 붙게 됨니다. FLAG_ACTIVITY_RESET_TASK_IF_NEEDED인텐트를 이용하여 새로운 테스크를 생성하거나 존재하고..
문서) https://docs.google.com/presentation/d/1IsY-A7oAAbMqX_si5tccmtJEbp0hjHNCQhIj0gf2XtY/edit?usp=sharing Ncnn Mobilenet_V1 (https://github.com/nanamare/ncnn_mobilenet) 텐서 플로우는 구글의 머신러닝 프레임 워크이며, 텐서 플로우 라이트는 임베디드, 모바일 같은 플랫폼에서 사용하기 위해 최적화 되어 있는 구글에서 제공하는 라이브러리 입니다. NCNN 은 모바일 플랫폼에 최적화 된 고성능 신경망 추론 컴퓨팅 프레임 워크입니다. 특이하게도 "NCNN은 휴대 전화 CPU의 모든 알려진 오픈 소스 프레임 워크보다 빠르게 실행됩니다"라고 써져 있어 궁금하기도 하고 NCNN에 관심이 있..
보통 크게 2 가지로 나뉜다. 정적 라이브러리 (.a)동적 라이브러리(.so) 정적 라이브러리는 object file의 모음이며, .a 확장자를 가진다. 컴파일 시 실행 파일에 포함된다.동적 라이브러리는 .so 확장자를 가지며 컴파일 시에 실행 파일에 적재되지 않으며, 런타임에 필요할 때 로드하여 사용한다. 또한 제공하는 ABI(Application Binary Interface)도 armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64로 다양하다.대부분의 안드로이드에서는 ARM 계열의 CPU를 사용하기 때문에 안드이드 NDK를 빌드 시에 armeabi, armeabi-v71, arm64-v8a로 대부분 빌드된다.일부기기에서는 x86용이 적용되기도 한다...
Paint p = new Paint(); Rect bounds = new Rect(); p.getTextBounds(labelString, 0, labelString.length(), bounds); float height = p.measureText(labelString); int width = bounds.width();
Consensus-based Matching and Tracking of Keypoints for Object Tracking - 2014 VOT(visual object tracking) award winning algorithmCMT알고리즘은 기본적으로 Detector(영상 특징점) 로는 FAST algorithm Descriptor(영상 기술자) 로는 BRISK 를 사용하고 있다.그 전에 기본적으로 영상 특징점과 영상 기술자에 대해서 간단하게 알아야 한다. 영상 특징점(Key point)이란?(FAST 알고리즘 사용한 KeyPoints) - 보통 물체의 Scale, size, orientation이 변해도 식별 가능한 점.- 물체를 바라보는 시점이나 조명이 변해도 변하지 않는 물체의 고유한 특징 점..