Dev 283

커스텀뷰 CustomView 기초

안드로이드 기본 API에서 제공하는 라이브러리의 뷰와는 완전히 다른 뷰를 만들때는 모든 뷰의 최상위 클래스인 View를 상속받아 작성해야 한다. 주의사항- 레이아웃 XML 파일에 등록하여 다른 뷰와 함께 화면을 구성할 경우 생성자를 하나만 정의하면 실행시 에러가 발생.- 레이아웃 XML에 등록해서 이용하려면 생성자 3개를 모두 정의해야 한다. public class MyView extends View {Context context;public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs) {super(context, attrs);}public MyView(Context context, A..

Dev/Android 2018.03.21

CS50 공부 - 알고리즘

링크주소 : http://www.edwith.org/cs50 버블정렬 (Bubble Sort) : 인접한 두 수를 비교해서 큰 수를 뒤로 보내는 정렬 방법이다.시간복잡도 O(n²)삽입정렬 (Insertion Sort) : 정렬되지 않은 숫자들을 하나씩 빼서 정렬되어 있는 숫자 사이의 올바른 위치에 삽입하는 정렬 방법이다. 삽입 정렬은 자료의 양이 적을 때 성능이 우수하며 자료 대부분이 이미 정렬이 되어있는 경우 효율적이다.선택정렬 (Selection Sort): 배열 안의 자료 중 가장 작은 수(혹은 가장 큰 수)를 찾아 첫 번째 위치(혹은 가장 마지막 위치)의 수와 교환해주는 방식의 정렬 방법이다.합병정렬 (Merge Sort) : 원소가 한 개가 될 때까지 계속해서 반으로 나누다가 다시 합쳐나가며 정..

Dev/Algorithm 2018.03.20

1D1A - One Day One Algorithm

문제 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. 기본제공import java.util.Arrays; class TryHelloWorld { public int[] gcdlcm(int a, int b) { int[] answer = new int[2]; return answer; } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args) { TryHelloWorld c = new TryHelloWorld(..

Dev/Algorithm 2018.03.19

CS50 공부 - 알고리즘

의사코드는 프로그래밍언어보다 문법적 제약을 적게 받는 알고리즘 표현 방법이다. 선형탐색(순차탐색)은 원하는 원소가 발견될 때까지 처음부터 마지막 자료까지 차례대로 탐색한다.1. 정확하지만 아주 효율적이지 못한 방법이다.2. 자료가 정렬되어 있지 않거나 그 어떤 정보도 없어 하나씩 찾아야 하는 경우에 유용하다. 이진탐색은 정렬된 데이터를 좌우 둘로 나워서 원하는 값의 탐색 범위를 좁혀가며 찾는 방법이다.추가 포스팅1. CS50 알고리즘 - 버블정렬, 선택정렬, 삽입정렬(링크)

Dev/Algorithm 2018.03.19

1D1A - One Day One Algorithm

문제 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) 제출 답안class SumMatrix {int[][] sumMatrix(int[][] A, int[][] B) {int[][] answer = new int[A.length][A[0].length]; for (int i = 0; i < answer.length; ..

Dev/Algorithm 2018.03.14

부모 레이아웃과 자식 레이아웃의 클릭 리스너 트리거 - DuplicateParentState

부모 레이아웃과 자식 레이아웃에 동일한 클릭 리스너 적용하기 하위 레이아웃의 클릭 반응이 상위 레이아웃에 동일하게 클릭 리스너가 적용하기 위해서 DuplicateParentState 속성을 추가해 줘야한다.android:duplicateParentState="true"참고 : https://stackoverflow.com/a/8050279/3897810 구현에 따른 생각 과정 :나의 경우, 위와 같은 버튼을 만들었다. 중간의 사진을 제외하고는 레이아웃으로 쪼개서 구현하였기 때문에 레이아웃이 파편화 되어있다.그런데 저 버튼 전체가 클릭 리스너 반응이 적용되야 했다. 그런데 레이아웃이 파편화 되어있기에 하나씩 id 를 부여하고 리스너를 줘야하는가 라는 생각을 했고, 아니다라는 생각으로 해당 레이아웃을 구현한..

Dev/Android 2018.03.13

이 앱은 기기에 최적화되어 있지 않을 수도 있습니다.

이 앱은 기기에 최적화되어 있지 않을 수도 있습니다 안드로이드 태블릿 최적화 방법 ** 해당 글은 개발자적 관점에서 올린 해결 방법입니다 기기 최적화에 대한 해결 방법 2가지1. APK가 일반적인 태블릿 화면 밀도에 최적화된 맞춤 드로어블 애셋이 있어야 한다.https://developer.android.com/develop/quality-guidelines/tablet-app-quality.html#use-tablet-icons 2. 태블릿 스크린샷이 업로드 되어야 한다.

Dev/Android 2018.03.12