전체 글

Never stop acting like the new one on the team
Android/Development Tips

[Android] Sparse Array 와 HashMap 비교하기

accept 보통 작업을 하다 보면, Map를 사용하게 되면, SparseArray 더욱 좋은 Performance를 가지고 있으니 바꾸라는 Lint가 뜬다. SparseArray는 Primitive type의 키를 가질때, HashMap 으로 대체될 수 있다. SparseArray 가 가지는 장점으로는 HashMap 과는 달리 내부에서 객체를 생성하지 않아, 더 높은 퍼포먼스를 가진다고한다. 그렇게 때문에 Wrapper 클래스로 boxing 할 필요가 없어 또한 이점을 가진다. SparseArray의 주 목적은 객체 대신 객체를 키로 사용하여 메모리를 절약한다는 것이다. 단점으로는 안드로이드에서만 동작하기 때문에 안드로이드에 높은 의존성을 가진다. HashMap은 아래와 같이 변환되어 사용될 수 있다...

Android/Development Tips

[Android] Foreground 활용하기, 터치 이벤트 쉽게 적용하기

보통 안드로이드 개발을 하다보면, 사용자가 터치해야 하는 영역을 커스텀하여 개발하는 일이 잦다. 보통 Selecter 같은 것을 활용하여, background(후경)에 적용하여 해결하지만, 가끔 하위 뷰에 터치 이벤트가 가려지는 경우가 있다. 그래서 appcompat-v7 라이브러리 에서 터치 이벤트를 쉽게 적용할 수 있도록 ?attr/selectableItemBackground, ?attr/selectableItemBackgroundBorderless 등 제공하는 속성을 이용하여 Foreground(전경)에 넣어주게 되면 터치 이벤트가 뷰의 가장 앞에 위치하게 되어 해결할 수있다. 참고로 Foreground 속성은 FrameLayout에서 제공하며, 이를 상속 받는 모든 것들에 적용할 수 있습니다.

Kotlin & Java

[Java ] 두개의 리스트에서 중복되는 객체 비교

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..

Android/Development Tips

[펌] Activity 스택 intent flag

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인텐트를 이용하여 새로운 테스크를 생성하거나 존재하고..

Android/미분류

텐서플로우, 텐서 플로우 라이트, NCNN 비교해보기.

문서) 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에 관심이 있..

Android/Development Tips

Android NDK

보통 크게 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용이 적용되기도 한다...

Android/Development Tips

Measuring of String in android

Paint p = new Paint(); Rect bounds = new Rect(); p.getTextBounds(labelString, 0, labelString.length(), bounds); float height = p.measureText(labelString); int width = bounds.width();

미분류

Tracking algorithm(쓰는 중.)

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이 변해도 식별 가능한 점.- 물체를 바라보는 시점이나 조명이 변해도 변하지 않는 물체의 고유한 특징 점..

Nanamare
TEAM > SELF