분류 전체보기 613

코딩으로 뷰의 크기확인 및 수정

코딩으로 뷰의 크기 보기 및 수정이 예시에서는 스크롤뷰의 크기를 알고 내부의 뷰(topConstraint)의 크기를 조절 onCreate에서 크기를 구하면 0으로 나온다.아직 뷰가 그려지지 않았기 때문이다. OnGlobalLayoutListenerGlobal Layout의 상태나 ViewTree 상태가 변화했을때 불리는 리스너이다.이 리스너를 사용하면 View가 전부 그려진 후 호출되므로 View의 크기를 구할수 있다 리스너 선언val mGlobalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener { val scHeight = scrollView.height val supportBtn = supportBtn.height // Apply the chang..

DisplayMetrics.density

DisplayMetrics.density resolutionresolution은 해상도를 의미합니다. 예로 들면 320*480, 1080*1920등과 같은 디스플레이의 가로, 세로 픽셀 수를 의미합니다. density안드로이드에서 getResources().getDisplayMetrics().density로 구할 수 있는 density는 디스플레이의 논리적인 density(밀도)를 의미합니다. 이것은 Density Independent Pixel(DIP, 밀도와 무관한 픽셀) 단위에 쓰이는 곱하기 인자(scaling factor)입니다. 1 DIP는 대략 160 dpi(예를 들어 가로1.5인치 세로 2인치의 240x320해상도를 가지는 스크린) 스크린에서 1픽셀에 해당하는데 시스템 디스플레이의 기준이 됩..

중첩클래스(Nested Class, Mehod Local, Anonymous, Inner Class)

중첩클래스클래스들의 논리적인 그룹을 나타낼 때 사용. 주로 model 객체에서 상위모델과 하위모델이 있을 때 사용.향상된 캡슐화좋은 가독성과 유지보수성 1. 내부클래스(Inner Class)내부클래스로서 일반클래스 내부에 생성된다. Non-Static Nested Class 라고도 불린다.밖에 있는 클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스를 만들어야한다.내부클래스는 자신의 밖에 있는 클래스의 자원을 직접 사용할 수 있다. class Outer { 변수; 메소드; public class Inner { } } Outer 객체1 = new Outer(); //외부 Outer.Inner 객체2 = 객체1.new Inner(); //내부 2. 중첩클래스(Nested Clas..

JAVA 2019.05.09

캐쉬(Cache)메모리 매핑

캐쉬(Cache)메모리 매핑 Locality of Reference(참조의 지역성)CPU가 한번 참조한 데이터는 참조할 가능성이 높고, 그 주변 역시 참조할 가능성이 높는 이론. 따라서 자주 쓰는 데이터를 캐쉬에 두고 데이터를 전달할 때 미리 다음에 받을 데이터까지 빠른 저장장치에 둔다면 컴퓨터의 성능이 좋아진다. 가격이 비싼 캐쉬메모리의 용량을 아낄 수 있어 비용이 절감된다. *Mapping Function MMU: 가상메모리(virtual)와 실제메모리(physical) 사이에서 주소변환 역할을 한다. 1. 직접매핑(Direct Mapping)적중률(Hit rate)가 낮고 단순한 매핑. 메인메모리와 동일한 배열로 캐쉬에 저장한다. 주변부까지 Block단위로 저장한다. 메인메모리의 몇번째 블록인지 알..

기타 2019.05.09

MVP패턴 (+BaseActivity, BasePresenter, BaseView)

MVP패턴 (+BaseActivity, BasePresenter, BaseView)NumPicker Sample App 만들 때 사용: https://github.com/lipnus/pickerGoogle Kotlin MVP todo Sample:https://github.com/googlesamples/android-architecture/tree/todo-mvp-kotlin/ BaseActivity.ktopen class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } //프레퍼런스에서 불러오기 open fun getStri..

객체지향프로그래밍(Object Oriented Programing, OOP)

객체지향프로그래밍(Object Oriented Programing, OOP) 프로그래밍에서 필요한 데이터를 추상화시켜 상태(변수)와 행위(매소드)를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 장점 코드재사용이 용이: 남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장해서 사용할 수 있음. 유지보수가 쉬움: 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야 한다. 객체지향에서는 수정해야 할 부분이 클래스 내부에 맴버 변수 혹은 메서드로 있기 때문에 해당 부분만 수정하면 됨. 대형프로젝트에 적합: 클래스 단위로 모둘화히켜서 개발할 수 있으므로 대형프로젝트에서 여러명, 여러회사에서 개발이 필요할 시 업무 분담하기 쉽다. 단점 ..

JAVA 2019.05.04

Gradle에서 버전 번수로 선언해서 사용하기

Gradle에서 버전 번수로 선언해서 사용하기 Gradle(Module)apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 28 defaultConfig { applicationId "com.lipnus.android.numpicker" minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTy..