다양한 화면 해상도를지원하는 방법 4가지
1) wrap_content, fill_parent와 DIP를 사용하라.
layout_width="100dip“
= 100 pixels on an HVGA@160 density
= 150 pixels on a WVGA@240 density
* 사용자가 보기에는 거의 동일한 크기로 보여짐
10.
다양한 화면 해상도를지원하는 방법 4가지
2) AbsoulteLayout을 사용하지 말아라.
1.5에서 deprecated된 클래스
* FrameLayout과 이 레이아웃의
layout_margin 속성으로 동일한 화면을 구성할 수 있음
11.
다양한 화면 해상도를지원하는 방법 4가지
3) 코드에서 픽셀로 크기를 지정하지 말아라.
안드로이드는 내부적으로 픽셀을 기본 단위로 사용
* 필요하다면 DIP를 PIXEL로 변경해야 함
12.
다양한 화면 해상도를지원하는 방법 4가지
4) 화면 해상도에 맞게 다양한 리소스를 제공하라.
* 다양하게 제공할 수 없을 경우에는 HDPI를 제공함
13.
다양한 화면 해상도를지원하는 방법
텍스트를 지정할 때 사용해야 하는 단위는?
SP : 사용자 설정에 따라 텍스트 크기 변경됨.
(Scale-independent pixel)
DP : 사용자 설정에 따라 텍스트 크기 변경되지 않음.
(Density-independent pixel)
1. 객체는 최대한적게 생성하라.
static 메소드를 사용해서 객체 생성을 줄일 수 있다.
int myNum = Integer.valueOf("123").intValue();
int myNum = Integer.parseInt("123");
22.
1. 객체는 최대한적게 생성하라.
반복문에서는 객체 생성을 줄여야 한다.
String result = "";
for (int i = 0; i < 10; i++) {
String temp = new String("" + i);
result += temp;
}
StringBuffer result = new StringBuffer();
for (int i = 0; i < 10; i++) {
result.append("" + i);
}
23.
1. 객체는 최대한적게 생성하라.
객체를 재사용한다.
StringBuffer total = new StringBuffer();
total.append("PRE");
//....
total = new StringBuffer();
total.append("AFTER");
StringBuffer total = new StringBuffer();
total.append("PRE");
//....
total.setLength(0);
total.append("AFTER");
3. 구현 타입을사용하라.
List list1 = new ArrayList();
List list2 = new Vector();
Map map1 = new Hashtable();
ArrayList list1 = new ArrayList();
Vector list2 = new Vector();
Hashtable map1 = new Hashtable();
4. 메소드는 정적메소드로 선언하라.
class State {
int currentNum;
public int getMaxNum() {
return 100;
}
}
class State {
int currentNum;
publicstatic int getMaxNum() {
return 100;
}
}
5. 클래스 내에서는Getter와 Setter를 사용해서 변수에 접근하지 말아라.
class Person {
int age;
class Person {
private int getAge() { int age;
return age;
} public int getPersonAge() {
if (age < 0) return 0;
public int getPersonAge() { else return age;
if (getAge() < 0) return 0; }
else return getAge(); }
}
}
7. enum은 되도록사용하지 말아라.
enum Season {
SPRING(1), SUMMER(2),
class WINTER {
FALL(3), WINTER(4); class FALL {
class SUMMER { num;
private final int
class SPRINGint num;
private final {
private final int num;
private final int num; private final int num;
private WINTER(int num){
private FALL(int num){
this.num = num;
private SUMMER(int num){
private Season(int num){ this.num = num;
private SPRING(int num){
} this.num = num;
this.num = num; } this.num = num;
}
} }
public int getNum() {
public int getNum() {
return num;
public int getNum() {
public int getNum() { return num;
public int getNum() {
} return num;
return num; } return num;
} }
} } }
}
} }
9. 네티브 코드는되도록 사용하지 말아라.
JNI – Java Native Interface
자바에서 C/C++를 호출하기 위한 메커니즘
자바보다 더 나은 속도를 위해 사용됨.
하드웨어를 제어하는 용도로 사용됨.
디바이스에 따라 호홖되지 않을 수 있음.
디버깅을 하는 것이 쉽지 않음.