'분류 전체보기'에 해당되는 글 104건

카테고리 없음
카테고리 없음

원글 : http://javacan.tistory.com/234


안드로이드를 좀 더 잘 해 보기 위해 기초를 다지고 있는데, 그 중 첫 번째로 공부하고 있는 부분이 해상도 및 레이아웃과 관련된 내용이다.


안드로이드의 주요 단위


안드로이드 기기들이 해상도와 물리적인 크기가 저마다 다르기 때문에, UI 레이아웃을 기기별로 깨지지 않게 만들어주려면 주요 단위에 대한 이해가 필요하다. 다음은 안드로이드 개발시 알아야 하는 용어/단위를 정리한 것이다.


용어 및 단위

설명

Pixel

화면상의 픽셀

해상도(Resolution)

픽셀 단위의 화면 크기. 예를 들어, 갤럭시노트 10.1의 해상도는 1280*800인데, 이는 픽셀이 1280개 및 800개임을 의미한다.

DPI (Dots Per Inch) / 밀도

물리적인 1 인치 당 포함되는 픽셀 개수. 예를 들어, 160 DPI는 1인당 픽셀이 160개 포함된다는 것을 의미한다. 주요 DPI는 다음과 같다.

- LDPI (low) : 120 DPI

- MDPI (medium) : 160 DPI

- TVDPI : 213 DPI

- HDPI (high) : 240 DPI

- XHDPI (extra high) : 320 DPI

스크린 크기

물리적인 크기의 종류를 나타낸다. 다음의 4종류가 존재한다.

- X-Large: 주로 10.1 인치 이상의 디바이스

- Large: 주로 5인치 이상의 디바이스

- Normal: 3인치에서 5인치 미만의 사이의 디바이스

- Small: 3인치 미만의 디바이스

px

픽셀 기반의 단위

dip (density-independent pixels) 또는 dp

밀도 독립 단위로, 장치의 밀도에 상관없이 물리적으로 (거의) 동일한 크기를 갖는다.

sp (scale-independent pixels)

스케일 독립 픽셀 단위로 , dip와 유사하며, 글꼴 크기를 지정할 때 주로 사용된다.


실제 테스트 해 볼 수 있는 기기별로 확인해보니 주요 값은 다음과 같았다.


갤럭시노트 10.1

옵LTE 2

넥서스7

옵Q

해상도 (픽셀단위)

800 x 1280

720 x 1280

800 x 1280

480 x 800

해상도 (DP 단위)

800 x 1280

360 x 640

600 x 961

320 x 533

DPI

160 DPI (mdpi)

320 DPI (xhdpi)

213 DPI
(tvdip, hdip)
240 DPI

스크린 크기

xlarge

normal

large

normal

밀도 비율

(DPI / 160)

1

2

1.331250

1.5

안드로이드의 기준 DPI는 중간 수준인 160 DPI이다. 160 DPI를 기준으로 DPI가 크면 밀도가 높아지고, DPI가 작으면 밀도가 낮아진다. 또한, 160 DPI인 경우 밀도독립 단위인 DP(DIP)와 픽셀이 같은 크기를 갖는다. 즉, 160 DPI에서 1 DP는 1 PX이 된다.


PX와 DP


옵LTE2와 넥서스7 그리고 갤럭시노트 10.1에서 트위터를 실행해보면, 기기의 크기는 다르지만, 상단 바 부분의 물리적 높이가 동일한 것을 확인할 수 있다. 또한, 글자 크기도 동일한 것을 확인할 수 있다.


[옵티머스LTE2(좌)와 넥서스7(우)에서 트위터를 실행한 화면. 상단 바와 메뉴의 높이가 (거의) 같다]


위 그림에서 두 기기의 높이 해상도는 1280이지만, 물리적인 크기는 넥서스7이 더 크다. 따라서, 위 그림에서 실제 px 단위의 높이 값은 좌측의 옵티머스LTE2가 넥서스7보다 커야 위와 같이 물리적으로 동일한 크기로 표시된다. 모든 기기마다 물리적으로 동일한 높이를 갖는 px 값을 구해서 계산한다는 것은 매우 힘든데, dp 단위를 사용하면 위 그림처럼 기기의 크기에 상관없이 물리적으로 동일한 크기로 레이아웃을 구성할 수 있다.


XML 레이아웃 설정 파일에서 dp 단위로 크기를 지정하면, 안드로이드는 내부적으로 알맞은 px 단위로 값을 변환해서 크기를 구성한다. 따라서, 개발자는 dp 단위를 사용해서 물리적으로 동일한 크기를 갖는 레이아웃을 구성할 수 있다.


코드에서 직접 크기를 설정하는 경우에는 픽셀 단위로 지정하게 되는데, 이 경우 다음의 공식을 이용해서 dp 단위의 값을 px 단위의 값으로 변환할 수 있다.


px = dp * (DPI / 160)


기기의 DPI 구하기


dp 단위의 값으로부터 px 단위의 값을 구하려면 기기의 DPI를 구해야 하는데, 다음의 코드를 이용하면 DPI를 구할 수 있다.


Display dis = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

DisplayMetrics metrics = new DisplayMetrics();

dis.getMetrics(metrics);

// 해상도: dis.getWidth() * dis.getHeight() / metrics.widthPixels * metrics.heightPixels

// DPI: metrics.densityDpi

// 밀도비율 (DPI / 160) : metrics.density


참고자료

  • 기기별 DPI/해상도/크기 등: http://developer.android.com/tools/revisions/platforms.html
  • Supporting Multiple Screens: http://developer.android.com/guide/practices/screens_support.html
카테고리 없음

# rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm


# yum install kmod-nvidia
# reboot


finish
카테고리 없음


-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient

-Dhttp.proxyPort=portnumber

-Dhttp.proxyHost=host주소

-Dhttp.proxyUser=

-Dhttp.proxyPassword=

-Dhttp.nonProxyHosts=localhost|127.0.0.1

-Djava.net.preferIPv4Stack=true


  • proxy setting은 Window > Preferences > General > Network Connection 에서 설정


카테고리 없음

# wget -q -O - http://www.atomicorp.com/installers/atomic | sh
# yum update php

the end
카테고리 없음

wget http://dev.centos.org/centos/5/CentOS-Testing.repo
mv CentOS-Testing.repo /etc/yum.repos.d/
yum --enablerepo=c5-testing update php

이럴게 했는데 안될때
/etc/yum.repos.d/CentOS-Base.repo
추가
---------------------------------------------
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
-----------------------------------------------------------
yum update php
카테고리 없음

mysql을 yum으로 삭제하고~! 예를 들어 yum remove mysql 과 같이
그렇게 되면 mysql과 mysql-server만 삭제가 되는데 그 뒤에 혹시나 수동으로 /usr/share/mysql 폴더를 지웠을 경우
yum install mysql-server 로 재 설치를 하게 되면 mysqld를 시동시키는 순간 제목과 같은 아래의 메시지를 뿜어낸다.

[ERROR] Can't find messagefile '/usr/local/share/mysql/english/errmsg.sys'

이럴 경우 수동으로 mysql 폴더를 지웠는데 설치할 때는 위의 디렉토리에 파일들을 생성하지 못해서 생긴 문제
즉 저것은 다른 패키지가 설치한다라는 것을 의미한다.


그럴 경우 아래와 같이 해주자.

# rpm -qa | grep -i mysql
perl-DBD-MySQL-4.013-3.el6.x86_64
mysql-server-5.1.61-4.el6.x86_64
MySQL-python-1.2.3-0.3.c1.1.el6.x86_64
mysql-libs-5.1.61-4.el6.x86_64

# rpm -e mysql-server-5.1.61-4.el6.x86_64 --nodeps
# rpm -e MySQL-python-1.2.3-0.3.c1.1.el6.x86_64 --nodeps
# rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps
# rpm -e perl-DBD-MySQL-4.013-3.el6.x86_64 --nodeps

이렇게 되면 깔끔하게 관련된 mysql 패키지가 다 지워진다.
그 뒤에 다시 yum install mysql-server로 설치하고 service mysqld restart 를 하게 되면 재대로 설치 후 실행되는 것을 확인할 수 있다.


카테고리 없음
Mac을 쓰다가 sudoers파일을 잘못 수정하여서 오류가 발생한 적이 한번쯤 있을 듯하다.
결국 parse 오류가 나게 되면 더 이상 저 파일을 사용도 , 열지도 못하고 sudo -s 를 해도 오류가 나서 진입이 안된다.

그럴 때 Finder를 열어서 이동 -> 폴더로 이동 을 클릭하고 텍스트박스에 etc를 입력하고 엔터~
그러면 sudoers파일이 보인다 여기서 오른쪽을 클릭해서 propertise로 들어가면

권한 설정하는 부분이 있다 열쇠고리를 오픈시켜주고 everyone의 권한을 읽고&쓰기로 변경해준다.
그리고 터미널이나 텍스트 에디터에서 sudoers파일을 수정한 뒤 sudo -s 가 되는지 확인해보고~ 되면 다시 everyone의 권한을
접근불가로 변경하자~

완료 
카테고리 없음

잘못하면 아예 서버 OS를 다시 설치해야하는 문제가 발생하기에 신중하게 하도록 하자~!


# yum install gcc ncurses-devel rpm-build bison depmod mkinitrd

# mkdir /home/source ; mkdir /home/source/tmp

# wget -c "http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.2.tar.bz2"

# tar xvf linux-3.3.2.tar.bz2

# cd linux-3.3.2

# make clean && make mrproper

# uname -a

 Linux cloud07.platform.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux

kernel version = 2.6.32-220.el6.x86_64

현재 환경을 그대로 담고 커널을 컴파일하기 위해서 현재 환경설정 파일을 boot 폴더에 config-2.6.32-220.el6.x86_64 파일을 가져와서 .config로 이름을 변경한다.

# cp /boot/config-2.6.32-220.el6.x86_64 ./.config

# make menuconfig

위의 make 옵션으로 실항하면 menu가 나온다.
옵션 중 General Setup 항목에 Enable deprecated sysfs features which~~~~~ 이 항목을 활성화 시켜서 * 표시가 들어오도록 하고 그 아래 항목도 체크 해주자

그리고 난 뒤 .config 내에 CONFIG_SYSFS_DEPRECATED_V2=y 가 되었는지 확인, 위의 menu화면에서 안하고 해당 옵션을 .config 파일 내에서 y로 변경해주어도 된다. 그 위에 CONFIG_SYSFS_DEPRECATED=y도 확인


# make 

# make modules

# make modules_install && make install

# vim /boot/grub/grub.conf 

위의 명령으로 grub.conf 내에 새로 컴파일한 커널이 부팅가능하도록 셋팅 되었는지 확인

# reboot


완료


 
카테고리 없음
CloudStack korea

http://www.cloudstack.or.kr
http://www.cloudstack.kr


CloudStack의 한국 커뮤니티 사이트를 오픈하였습니다.
소스레벨까지 완벽한 분석 및 문제점 해결을 위한 커스터마이징 자료를 많이 올릴 예정입니다.

CloudStack의 최신 정보와 따뜻한 정보교류의 장이 되었으면 하네요~


많은 방문 바랍니다.
1 2 3 4 5 6 7 ··· 11
블로그 이미지

개발자

우와신난다