728x90

alpha : 서서히 나타나는 애니메이션, 스플래시 윈도우나 뷰들을 자연스럽게 나타내고자 할때 사용( 알파값을 반대로 하면 서서히 사라짐)


<alpha xmlns:android="http://schemas.android.com/apk/res/android"

android:interpolator="@android:anim/accelerate_interpolator"

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration=@android:integer/config_longAnimTime" />


translate : 이동


<translate

android:fromXDelta="100%p" android:toXDelta="0"

android:duration="@android:integer/config_shortAnimTime" />


[왼쪽으로 이동하며 서서히 나타남]


<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300" />

<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />

</set>


[왼쪽으로 이동하며 서서히 사라짐]


<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300" />

<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />

</set>


[위로 이동하며 나타나기]


<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300" />

<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />

</set>


[7번 흔들기]


<translate  xmlns:android="http://schemas.android.com/apk/res/android"

    android:fromXDelta="0" android:toXDelta="10" android:duration="1000" 

    android:interpolator="@anim/cycle_test" />

 

sclae + alpha를 사용한 축소되며 사라지기


<set xmlns:android="http://schemas.android.com/apk/res/android"

android:interpolator="@android:anim/decelerate_interpolator"

android:zAdjustment="top">

<scale android:fromXScale="1.0" android:toXScale=".5"

android:fromYScale="1.0" android:toYScale=".5"

android:pivotX="50%p" android:pivotY="50%p"

android:duration="@android:integer/config_mediumAnimTime" />

<alpha android:fromAlpha="1.0" android:toAlpha="0"

android:duration="@android:integer/confg_mediumAnimTime"/>

</set>


서서히 나타나며 원래 크기보다 커졌다가 원래크기로 돌아가는 애니메이션


<set xmlns:android="http://schemas.android.com/apk/res/android"

android:interpolator="@android:anim/decelerate_interpolator"

<alpha

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration="100" />

<scale

android:fromXScale="0.5" android:toXScale="1.5"

android:fromYScale="0.5" android:toYScale="1.5"

android:pivotX="50%" android:pivotY="50%"

android:duration="200" />

<scale

android:fromXScale="1.5" android:toXScale="1.0"

android:fromYScale="1.5" android:toYScale="1.0"

android:pivotX="50%" android:pivotY="50%"

android:startOffset="200"

android:duration="100" />

</set>


레이아웃 애니메이션 : 레이아웃에 포함된 각 뷰들이 보여지는 애니메이션 설정


<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"

android:delay="0.5"

android:animationOrder="random"

android:animation="@anim/설정할 애니메이션" />


728x90
Posted by 정망스
,
728x90

노트북에 안드로이드 환경을 구축하려 시도를 했다. 결론은 이클립스 안드로이드 환경 구축하는데 하루가 걸렸다..(삽질..)

 

최근 안드로이드 배포가 많이 바뀐것 같았다.

아예 최신 SDK까지 포함한채로 이클립스 압축파일을 배포하고있었다.

 

하지만 난 그것을 원한게 아니라

주로 웹 개발을 목적으로 이클립스 ee버전을 사용하고있기 때문에 지금 사용하는 이클립스 자체에 안드로이드를 설치하고싶었다.

 

예전방식대로 안드로이드 구글 주소와함께 ADT를 설치하고 했는데

왜냐...

왜 이 아이콘들이 보이지 않느냐...

많은 고심을 하다가 아 ... 삽질했구나.... 퍼스펙티브를 java로 바꾸니 이 아이콘이 보였다...(....................)

 

이제 다른 하위 sdk 버전들을 다운받자 라는생각에 SDK Manager를 실행했는데 뭐냐

sdk manager 경로를 계속찾을수 없단다

난 분명 경로설정 되있는데 말이다....

 

고심끝에 구글링을하던중 발견!

 

나만 이런것이 아니였다. 윈도우8에서만 이런건지는 모르겠는데 jdk의 경로명에 포함되어있는 띄어쓰기를 인식하지못해 실행이 안되고 있었다.

 

 

이것은 나의 컴퓨터 윈도우7환경의 경로인데 띄어쓰기 있는데도 잘 인식한다..

 

그런데 이상하게 윈도우8 노트북에서만 안된다.

 

그래서 기존 jdk를 지우고 다시 설치하되, 경로명에 띄어쓰기 없는 경로에 설치했다

나같은경우엔 c안에 위치한 temp폴더에 java폴더를 생성해서 설치했다

 

그랬더니 SDK Manager이 아주 잘실행 된다~

728x90
Posted by 정망스
,
728x90

리소스는 매우 중요한 부분으로써, 일반적으로 참조하고자 하는 이미지, 오디오, 비디오, 문자열, 테마, 레이아웃 등과 같은 외부 요소들로 이루어진다. 즉 프로그램의 외형을 장식하는 역할을 한다.

 

모든 안드로이드 어플리케이션은 리소스 디렉토리(res/) 와 에셋 디렉토리(asstes/)를 가진다.

 

일반적으로 에셋보다는 리소스를 주로 사용한다. 이유는 안드로이드의 R 클래스를 통하여 쉽게 참조가 가능하기 때문이다.

 

리소스 생성

 

리소스는 많은 타입의 리소스를 지원하며, 각각의 포맷, 저장되는곳 들은 그 객체의 타입에 따라 다르다.

 

일반적으로는 아래 세 개의 타입으로 리소스를 만들면 된다.

 

1.XML파일 (비트맵, 원시 파일을 제외한 모든 것)

2.비트맵 파일 (이미지 등)

3.원시(raw) 파일 (사운드 파일 같은)그외 모든것들

 

프로젝트 내의 res 디렉토리 아래 또는 그 하위에 리소스 파일을 저장하며, 리소스가 위치하는 하위 폴더와 파일 포맷에 따라 그것들을 컴파일하는 리소스 컴파일러(aapt)를 가지고 있다.

 

 

리소스는 최종적으로 .apk 파일내에 컴파일이 되며 R 이라는 래퍼 클래스를 통해 리소스들을 참조할 수 있게 해준다. R 클래스는 파일 경로와 그에 따르는 서브클래스를 포함하고 있다.

 

리소스 타입

res/anim : 애니메이션 방식을 정의하는 xml 파일을 저장

res/drawable : 이미지 파일, 도형을 정의하는 xml 파일 등을 저장

res/layout : 화면의 레이아웃을 저장한다. 뷰 그룹과 뷰 파생 클래스의 배치 상태가 레이아웃에 기록된다.

res/values : 문자열,색상,배열,크기,스타일(strings.xml, colors.xml, arrays.xml, dimens.xml, styles.xml) 등 여러 가지 값들을 정의하는 xml 파일이 이 폴더에 배치된다.

res/xml : 실행 중에 읽어서 사용할 임의의 xml 파일을 저장

res/raw : 임의의 이진 파일이 저장

 

리소스 사용

리소스는 컴파일 시점에서 시스템은 프로그램에 있는 모든 리소스에 대한 식별자를 포함하는 R 클래스를 생성한다.

 

R 클래스는 자동으로 생성되며 ,빌드 시점에 자동으로 갱신되기 떄문에 절대로 편집하지 않아야 한다.

 

아래는 R 클래스의 구조

코드에서 리소스 사용

코드에서 리소스를 사용하려면, 리소스 ID와 리소스 타입을 알아야 한다.

 

R.resourceType.resourceName 형식 : 직접 생성한 리소스를 참조 할때

android.R.resourceType.resourceName : 미리 정의되어 있는 안드로이드 내의 리소스를 참조 할떄

 

리소스 타입은 R 클래스의 서브 클래스가 되며, 리소스 명은 xml에 정의된 속성이거나 다른 파일 타입에 의해 정의된 리소스의 파일 이름이다, 리소스 타입은 알맞게 R 클래스의 서브 클래스로써 추가 되어 진다.

 

직접 생성한 어플리케이션 내의 리소스는 패키지 이름 없이 참조한다. ex) R.XXX.XX

안드로이드에 미리 정의된 표준 리소스는 ex)android.R.XX.XXX , android를 붙여야 한다.

 

리소스 참조하기

속성 또는 리소스로 제공되는 값도 참조할 수가 있다.

예를들어 색상값을 지정한 리소스가 있다면 레이아웃에서 참조하여 색상 지정을 할수가 있다.

 

 

 

리소스 참조를 위해 제일 앞에 @ 문자가 있다, 그다음 텍스트는 @[package:] type/name 형식이며

위 소스에서는 해당 패키지 내부에서 리소스를 참조하는 것이기 때문에 패키지를 지정하지 않았다.

 

 

시스템 리소스 참조를 위해서는 위에서 말한것 처럼 패키지 이름을 써야한다.

 

 

문자열도 리소스로 관리하면 유용하다.

 

 

리소스 상호간에도 리소스를 참조할 수가 있는데 이미 존재하는 이미지에 대해 새로운 드로블 리소스를 만들면 된다.

 

테마 속성 참조하기

 

현재 적용되어 있는 테마의 속성값을 참조하기 위해서는 스타일 리소스와 XML 속성에서만 사용 가능하다.

즉 구체적인 값 대신에 현재 테마를 변경하여 UI를 커스텀하는 방식이다, 예로는 레이아웃에서 기본 시스템 테마의 표준 색상값 중 하나를 참조하여 텍스트 컬러를 지정하는 것과 같은 예가 있다.

 

 

여기서 주의 있게 봐야 할 곳은 @ 대신에 ? 을 사용한다는 것이다.

이떄 테마에서 찾을 속성의 이름을 제공해야 한다. 테마에서 값을 찾는 ? 를 사용하는 것을 제외하면 나머지는 @를 사용하는 구문과 동일하다.

 

시스템 리소스 사용하기

 

이것은 어플리케이션 소스에서도 사용이 가능하다, 이러한 리소스들은 모두 android.R 이라는 클래스에 정의 되어 있다.

 

 

 

728x90

'Android' 카테고리의 다른 글

안드로이드 어댑터 뷰  (0) 2012.08.01
안드로이드 기본 위젯  (0) 2012.07.31
안드로이드 메뉴  (0) 2012.07.31
안드로이드 입력 (이벤트) 4  (0) 2012.07.31
안드로이드 입력 (이벤트) 3  (0) 2012.07.31
Posted by 정망스
,
728x90

안드로이드에서 자주 사용되는 속성들!

이름이 아주 직관적이어서 이름만으로도 의미를 파악하기 쉽게 되있다.

속성이름은 XML 문서에도 그대로 적용된다.

 

(id)

뷰를 칭하는 이름을 정의한다. 코드나 XML 문서에서 이 뷰를 참조할 때 id를 사용 하므로 의미를 잘 설명할 수 있는 이름을 붙여야 한다.

 

@[+] id/ID

 

@ : id를 리소스 (R.java)에 정의하거나, 참조한다는 뜻이며 무조건 붙여야 한다.

+ : ID를 새로 정의한다는 뜻이다, 처음 새로 정의할 때만 붙이고 참조할 때는 붙이지 않는다.

id : 예약어 이므로 그대로 쓰면되고 / 뒤에 원하는 이름을 작성한다.

ID : 고유한 명칭이므로 명칭 규칙에 맞추고, 같은 범위에 속한 뷰끼리 중복되어서는 안 된다.

 

android:id="@+id/name"

 

XML 문서에 ID를 지정해 놓으면 이 이름이 R.java에 정수 상수로 정의 된다. 코드에서 이 뷰를 참조할 때는 findViewById라는 메서드를 호출하여 인수로 참조할 뷰의 id를 전달한다.

예를 들어 name 위젯의 텍스트를 변경하고 싶다면 findViewById(R.id.name) 식으로 호출 한후 setText 메서드를 호출한다.

 

id는 뷰의 이름을 정의하는 중요한 속성이지만 모든 뷰에 id를 의무적으로 지정할 필요는 없다. 코드에서 참조할 필요가 없는 위젯은 보통 id를 생략한다. 예를 들어 배경에 이미지를 출력하는 이미지 뷰는 XML 문서에 배치되어 있으면 될 뿐 이후에 참조할 일은 없으므로 굳이 id를 줄 필요가 없다.

 

(layout_width, layout_height)

뷰의 폭과 높이를 지정한다. 뷰는 부모 뷰(또는 액티비티)안에 배치되는데 이 속성이 지정하는 만큼의 크기로 배치된다. 수평, 수직 각 방향에 대해 크기를 지정할 수 잇으며 다음 세 가지중 하나의 값을 가진다.

 

fill_parent : 부모의 주어진 크기를 다 채운다.

wrap_content : 내용물의 크기만큼만 채운다.

정수 크기 : 지정한 크기에 맞춘다.

 

 

 

(background)

뷰의 배경을 어떻게 채울 것인가를 지정한다. 

 

(padding)

뷰와 내용물간의 간격을 지정한다.

 

Padding : 4방향에 동일한 여백이 적용

PaddingLeft : 왼쪽변에 대해 여백이 적용

PaddingRight : 오른쪽변에 대해 여백이 적용

PaddingTop : 윗쪽변에 대해 여백이 적용

PaddingBottom : 아랫변에 대해 여백이 적용

 

(visibility)

뷰의 표시 유무를 지정한다. 별다른 지정이 없으면 당연히 보이는 상태로 배치되지만 이 속성을 지정하면 디자인 타임에 숨겨 놓았다가 런타임에 필요할 때만 보이도록 할 수도 있다.

 

visible : 보이는 상태

invisible : 숨겨진 상태이되 자리는 차지

gone : 숨겨지며 자리도 차지하지 않는다.

 

(clickable, longClickable)

마우스 클릭 이벤트를 받을 것인지, 롱클릭 이벤트를 받을 것인지를 지정

클릭은 손가락으로 뷰를 누르는 것이며 롱클릭은 누른 채로 잠시 기다리는 것이다. 진위형이므로 true 또는 false 둘 중 하나의 값을 지정한다.

 

(focusable)

키보드 포커스를 받을 수 있는지를 지정한다. 뷰 클래스 자체는 디폴트로 포커스를 받지 않도록 되어 있으므로 키 입력을 받으려면 이 속성을 true로 변경해야 한다.

(예외적으로, 에디트나 버튼처럼 사용자의 입력을 받아야 하는 파생클래스는 이 속성의 디폴트가 true로 지정되어 있다)

 

 

 

 

 

728x90

'Android' 카테고리의 다른 글

안드로이드 ImageView  (0) 2012.07.27
안드로이드 TextView  (0) 2012.07.27
안드로이드 뷰(view)의 계층  (0) 2012.07.27
안드로이드 에뮬레이터 사용법  (0) 2012.07.27
안드로이드 XML 레이아웃의 장점  (0) 2012.07.27
Posted by 정망스
,
728x90

 setContentView의 인수로 전달된 R.layout.main은 구체적으로 main.xml 레이아웃 파일을 의미

 마법사가 프로젝트를 생성할 때 기본 레이아웃 파일을 만들어주는데 패키지 탐색기에서 res/layout 폴더 안의

 main.xml 파일을 열어보면 아래와 같은 GUI 디자인 뷰가 열린다.

 

 

이 화면에서 마우스로 레이아웃을 편집하고 확인 할 수 있다.

아래쪽의 main.xml을 클릭하면 텍스트 형태로 xml 파일을 보고 편집 할 수 있다.

 

 

xml 파일이다, xml 헤더가 있고 utf-8로 인코딩 되어 있다.

루트 엘리먼트에는 android 네임 스페이스(android:)가 정의 되어 있는데 네임 스페이스란 어휘의 중복을 방지하기 위한 xml 표준 장치이다. 모든 속성명 앞에 이 네임스페이스가 붙는다.

 

이 파일의 구조는 현재 리니어 레이아웃에 텍스트 뷰를 하나 배치하고 택스트 뷰에 @string/hello 를 출력하라는 뜻이다.

리니어 레이아웃은 가장 흔하게 사용되는 레이아웃이며 차일드를 수평, 수직으로 나란히 배열하는 컨테이너이다.

여기서 @은 리소스에서 ID를 참조하라는 뜻이다. @srting/hello는 values 폴더의 strings.xml 파일에 정의되어 있다.

 

 

GUI 편집 화면이 열리는데 직관적이고 사용하기 쉽다.

아래쪽의 strings.xml 탭을 누르면 텍스트 형태로 전환된다.

 

 

 

두 개의 문자열이 정의되어 있다.

hello 문자열은 뷰 안에 출력되고 app_name 문자열은 타이틀 바에 표시된다.

이 문자열을 수정한 후 재실행(ctrl+s, ctrl+F11)하면 바뀐 문자열이 화면에 나타난다.

코드나 xml 파일에서 참조하는 리소스 ID는 R.java 파일에 정의된다.

이 파일에는 상수를 정의하는 클래스만 잔뜩 선언되어 있으며 코드는 전혀 없다.

 

이 파일은 개발툴이 자동으로 관리하므로 개발자가 임의로 편집해서는 안 되며 그럴 필요도 없다.

R클래스 안에 종류별로 drawable, layout, string 등의 정적 클래스를 정의하고 그 안에 main, hello등의 상수가

정의되어 있다. 그래서 소스에서는 복잡한 16진수를 쓸 필요없이 R.layout.main이라고만 쓰면 된다.

 

R.java 파일에 정의된 16진수의 실제값인 0x7f030000 등은 리소스 간의 구분을 위해 붙이는 일련 번호이며 개발툴이 알아서 관리한다. 내부적인 규칙에 의해 값이 중복되지 않도록 관리할 것이다. 값 자체는 큰 의미가 없기 때문에 몰라도 상관없으며 코드에서 Icon, main, hello 같은 명칭만 잘 사용하면 된다.

 

 

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침