우선 유투브 동영상에서 ID주소를 가져옵니다


아이디주소는 


네모 친부분이 아이디입니다 기억해주세요


그리고 원하는 이벤트안에 아래 문구를 넣어줍니다


Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("vud.youtube:YOUTUBEID)); 
startActivity(i);

굵은 글씨공간에 적어주면됩니다.


그럼 내가 특정이벤트를 실행시 원하는 동영상을 Youtube 내장앱을 이용해 감상하실 수 있습니다.


꼭 내장유투브 뿐만아니라 인터넷으로도 부르고 싶다. 즉 어떤걸 선택할지 사용자가 정하도록 하고싶은경우


Intent i=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=YOUTUBEID")); 
startActivity(i);

이런식으로 사용하면 됩니다.


Centos가 날라가서 다시 설치하고 세팅하는대

루트권한으로 들어가도 DDMS에 겔넥이 인식이 안되더군요.


구글신의 도움으로 글 써봅니다.


1. # lsusb 로 내폰을 찾아본다.


제폰이 왜 갤스2로 나오는지는 모르겠지만 여기서 알아두셔야할건 "ID 04e8:6860" 입니다.


2. # vi /etc/udev/rules.d/99-android.rules 로 파일을 만들어 아래내용과 같이 적어줍니다.



이때 "ID 04e8:6860" 이 ATTRS{idVendor}="아이디앞부분" , ATTRS{idProduct}="아이디뒷부분" 로 들어가 줘야합니다.


그리고 재부팅후 이클립스를 켜서 확인합니다.



야호 신난다. 이제 즐거운 개발을 해봐요...

카카오톡 처음화면보면 카카오톡 이뜬다음 몇초뒤에 본화면이 뜨게되어있는대


책을봐도없고 도저히 뭐로 검색해야할지 몰라서


"아 인텐트는 알고 시간은 쓰래드로 돌릴까? 근대 안드로이드는 주어진게 많아서 있을꺼같아!"


하고 찾아보니 카운트 다운 을 알게되어서 쓰게되었습니다.


우선 2개의 xml을 만들어서 하나는 이미지버튼으로 구현한 로고


다른하나는 초기메인화면을 출력하는 파일을 만듭니다


여기서는 로고를 띄우는 ProjectActivity

/  초기화면은 MenuActivity 로 생성했습니다.


그럼 화면을 넘기는 2가지이벤트


1. 카운트다운을 이용한 시간이지나면 이동하도록


2. 이미지버튼으로 눌렀을 경우 이동하도록


에 대해 써보겠습니다


  
CountDownTimer cdt = null;
cdt = new CountDownTimer(3500, 3500){
	@Override
	public void onFinish() {
		// TODO Auto-generated method stub
		Intent i = new Intent(ProjectActivity.this , MenuActivity.class);
		finish();
		startActivity(i);
		this.cancel();
	}

	@Override
	public void onTick(long millisUntilFinished) {
		
	}
	
}.start(); 


카운트다운을 먼저 선언하고 생성시에 매개변수로 (총카운트할 시간 , onTick를 반복할 주기시간)

을 적어줍니다. 우리는 한번만 반복할꺼기 때문에 3.5초후 화면이 넘어가도록 하고


인텐트로 메뉴로 이동하도록 하면 이동하게 됩니다


주의할점은 인텐트로 액티비티 호출후

ProjectActivity.this.finish();

를 이용하여 로고가 보이는 액티비티를 죽이지않으면 뒤로가기 했을경우에 다시로고가뜨는경우를

보실수있습니다..


  
ImageButton btnCall = (ImageButton) findViewById(R.id.startButton);

btnCall.setOnClickListener(new Button.OnClickListener(){
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Intent i = new Intent(ProjectActivity.this , MenuActivity.class);
		finish();
		startActivity(i);
	}
});



btnCall 이란 이미지버튼을 눌렀을때 화면이 넘어가도록 설정해보겠습니다

OnClickListener로 이벤트를 받아서 마찬가지로 액티비티를 넘겨주는 방식으로 사용하면 됩니다.


우리모두 어플 이쁘게 만들어보아요



릴렉티브 레이아웃은 꼬리물기 레이아웃입니다


A옆에 B , B아래 C 이런식으로 정렬하게 됩니다. 


우선 정렬속성을 보시면



속성 설명
layout_above ~의 위에 배치
layout_below ~의 아래에 배치
layout_toLeftOf ~의 왼쪽에 배치
layout_toRightOf ~의 오른쪽에 배치
layout_alignLeft ~와 왼쪽변 정렬
layout_alignTop ~와 위쪽 변 정렬
layout_alignRight ~와 우측변 정렬
layout_alignBottom ~와 아래쪽 변 정렬
layout_alignParentLeft true이면 부모와 왼쪽변 정렬
layout_alignParentTop true이면 부모와 위쪽변 정렬
layout_alignParentRight true이면 부모와 오른쪽변 정렬
layout_alignParentBottom true이면 부모와 아래쪽변 정렬
layout_alignBaseline ~와 베이스라인을 맞춘다
layout_alignWithParentIfMissing layout_toLeftOf 등의 속성에 대한 앵커가 발견되지 않으면 부모를 앵커로 사용한다
layout_centerHorizontal true이면 부모의 수평 중앙에 배치한다.
layout_centerVertical true이면 부모의 수직 중앙에 배치한다.
layout_centerInParent true이면 부모의 수평, 수직 중앙에 배치한다.

식으로 ~옆에  /~와 라인을 맞춤 / ~의 ~변에 라인을 맞춤 식으로 부모뷰 옆에 자식뷰를 배치 하는 방식으로 생각하시면 됩니다.

p52.jpg 

이런식으로 B를 부모 A를 자식이라고 생각했을 때

A옆에 B를 위치하여 찍는다. 라고 생각하시면 됩니다.



  
  
  	
  	


위코드를 보면서 무엇옆에 무엇이있는지 생각을하시고 아래그림을 보시면 되겠습니다.

 

오늘은 테이블 레이아웃을 구현해 보겠습니다.


우선 테이블 레이아웃은 표 형식으로 구현되는 레이아웃으로 

<TableRow ></ TableRow > 마다 행이 지정되고그안에 들어가는 요소별로 열이 지정됩니다.
01.<tablelayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="fill_parent">
02.<tablerow>
03.<textview android:text="국어" android:textsize="15pt" android:padding="10px">
04.<textview android:text="영어" android:textsize="15pt" android:padding="10px">
05.<textview android:text="수학" android:textsize="15pt" android:padding="10px">
06.</textview></textview></textview></tablerow>
07.<tablerow>
08.<textview android:text="88" android:textsize="15pt" android:padding="10px">
09.<textview android:text="92" android:textsize="15pt" android:padding="10px">
10.<textview android:text="76" android:textsize="15pt" android:padding="10px">
11.</textview></textview></textview></tablerow>
12.</tablelayout>



위 코드를 보면 처음 행안에 국 영 수 라는 TextView 값이 들어가 있고


다음행에는 점수 값이 TextView로 들어가 있습니다.



그래서 결과적인 출력화면으로


 


이런식의 화면을 보실 수 있습니다.


테이블레이아웃 자체는 너무간단하고 앞에서 레이아웃속성을 설명해서 이정도 설명해도 이해하시리라 생각됩니다.

안녕하세요 김구조 입니다.


오늘은 클래스에 대해서 정리 해 보겠습니다.


이자료도 방학동안 세미나를 한자료를 기초로 하여 발표용자료를 수정해 적는것이므로 내용자체로는 조금 부족할 수 도 있으니 


댓글주시면 바로 내용에 대한 답장해드리겠습니다.


그럼 시작하겠습니다





클래스의 일반구조


클래스는 헤더부분과 몸체에 해당되는 클래스 멤버 부분으로 구분 된다.

클래스 멤버는 클래스가 가지는 속성을 정의하는 멤버변수 부분,

객체의 초기화를 담당하는 생성자 부분,

클래스가 가지는 데이터를 조작하고 변환하는 메소드 범위 부분으로 나뉘어 질 수 있다.


그림1.jpg 


위에 그림을 깊게 보실필요는 없습니다 이렇다 라고 설명하기위해 적은 내용이며 뒤에 상세히 보다보면 어떤내용인지 파악하실수 있습니다.


이제 클래스의 구조가 어떻게 생겼는지 우리가 자주보는 코드로 보겠습니다


그림2.jpg 


이런식으로 클래스 선언하는 클래스 해더 부분

변수를 지정하는 변수부분 뒤에서 배울 생성자부분과 메소드부분이 존제하게 됩니다.

클래스의 선언을 자세히 보면

[ public / final / abstract ] class Class-name { // 클래스 헤더 부분

           ………      //클래스 멤버 부분

      }

클래스 앞에 클래스의 속성을 정하게 되고 클래스 뒤에 클래스 네임을 적어주어 선언을 하고 그안에 멤버부분을 적어주게 됩니다
객체의 선언은 제앞에 PPT 자료를 보고 오셨으리라 생각하고 간단히 설명하겠습니다
그림1-1.jpg 
객체는 선언부와 생성부가 나누어져 있습니다.
말그대로 선언부는 선언하여 null의 공간을 만들어 냅니다
그뒤 객체를 생성하게 되면 경우에따라 값이 들어가거나 참조(주소) 값을 가지게 됩니다.

이제 변수에 대해서 좀더 자세히 보겠습니다.
변수는 값을가지는 속성변수와 참조변수가 존제합니다.
속성변수는 7개의 타입의 속성에 대한 상수값들로 구성되어있고
참조변수는 어떠한 변수에 대한 값(의 주소)를 가지고 있습니다.
2-1.jpg

아래 그림을 보시면 차이점을 보실 수 있습니다
속성변수는 int my_count2 = my_count1 = 100; 과 같은의미며 각각 공간에 각각의 값을 저장합니다
하지만 참조변수는 값을 가져오는것이 아니라 주소를 가져오기 때문에 값이 복사가되는것이아니라 주소가 복사가 됩니다
이것을 얕은 복사  라고 합니다.
그림3.jpg 

클래스와 변수까지 살펴보았습니다. 발표용으로 한거라 칠판에도 적고 말로도 설명하고 해야 편한데
게시판에 적기만 하려니까 말도 좀 이상해지는거같기도 하내요

리플주시면 수정과 답변 해드리겠습니다.

모두 열공해요!

'Programming > Java' 카테고리의 다른 글

JMF 설치 및 세팅하기!!  (0) 2012.10.31
JDBC 를 Mysql에 연동해보자 (Eclipse + JDBC + Mysql)  (0) 2012.08.15
ObjectStream을 게임으로 생각해보자.  (0) 2012.02.14
컬렉션  (0) 2012.02.10
직렬화(Serialize)  (0) 2012.02.07
안녕하세요 김구조 입니다.

한다한다 하다가 드디어 안드로이드 들어왔내요.

저만 그런지모르겠지만 GUI개념은 좀어려워요 안써버릇한 개념이여서 그런지는 모르겠지만...

하다보면 이해되니까 저같은 분들도 많은 도움 얻어가시길 바래요.

틀린내용이나 궁금하신점은 댓글로 피드백 주시면 감사하겠습니다



레이아웃의 종류

1. 리니어 레이아웃

 - 차일드뷰(요소)를 일렬로 배치하여 차곡차곡쌓아 정렬하는 방식으로 가장 많이쓰이고 책에서도 처음에 나오는 방식.

2. 프레임 레이아웃

 - 차일드를 배치하는 기준이 없고, 모든차일드는 프레임 최산단에 나타나게됨, 그래서 막넣게되면 덮어씌워짐으로 주의하여야함!

3. 렐리티브 레이아웃 ( 상대적인 레이아웃 )

  - 위젯과 위젯 사이에 규칙을 정해 배치하는 레이아웃 (ex. Textview 오른쪽에 Button을 넣기)

대표적으로 3가지를 사용하고

오늘은 리니어 레이아웃에 대해 알아보겠습니다. 



1. 정렬하기

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    >

</LinearLayout>

<LinearLayout android:baselineAligned="true"> 

리니어 레이아웃 기본설정중에 가장중요한 3가지이다

layout_width와 height 는 각각의 크기를 지정할 수 있는대

fill_parent로 전부 채우거나 wrap_content로 내용물의 크기를 지정할 수 있다.

orientation은 가로로 채울것인지 세로로 채울것인지 정하는 요소이며

horizontal은 가로로 , vertical은 세로로 채운다 


 vertical horizontal 

 


2. gravity속성 정렬 하기

중력이란뜻인데.. 게임이생각나는 용어내요 

내용물을 어느쪽에 배치할 것인가를 gravity속성으로 지정하게됩니다. 수평 수직방향에 대한 정렬방식을 지정할수 있습니다

TextView를 사용할 경우에는

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="구조구조의 구조구조한 코딩"
android:textSize="30px"
android:textColor="#ffffff"
android:gravity="center|right" 
/>

이런식으로 center|right 로 설정하게되면


이런식으로 세로로 가운대 가로로 오른쪽 정렬이 이루어 지게 됩니다.

요소는 아래 표를 보고 참고하시고요




3 베이스 정렬
 

높이가 다른 차일드 뷰를 수평으로 나랑히 배치할때 사용하며, 바닥에 붙혀 정렬한다. 

크기가다른 요소들을 붙혀서 사용할 때 용이하다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:baselineAligned="true" > <!-- false로 할경우 정렬이 안된다. -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="김구조의 "
        android:textSize="10pt"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="구조구조한 "
        android:textSize="5pt"
        android:background="#0000ff"
        />
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="블로그 "
        android:textSize="20pt"
        android:typeface="serif"
        />

</LinearLayout>  


마진과 패딩

레이아웃에 요소가 다닥다닥 붙어있으면 안이쁘고 손으로 누를때 오작동의 가능성이 있기 때문에 여백을 띄워주어 잘정돈할 수 있다.

 

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
    <Button 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="구조구조해!"
        />
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#00ff00"
        android:padding="15px"
     android:layout_margin="15px">
    <Button 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="구조구조해!!"
        />
    </LinearLayout>
    

</LinearLayout>

마진과 여백을 보여주기위해 안에 리니어 레이아웃을 하나 더 넣어서 표현해 보았다.

여기서 녹색부분 태두리와 액티비티 끝부분과 떨어져있는 걸 볼수있는대 저것을 마진이라하고

녹색부분이 버튼과 떨어진 패딩이다. 다른 그림으로 보면

  
다음그림과 같이 볼수 있다. 필요에 따라 패딩이나 마진으로 여백을 주어 표현이 가능하고, 저것을 얼마나 응용하나에 따라서 이쁜어플이 될 수 있으리라 생각한다.


안드로이드 첫글인데, 코드 수정하고 올리고 좀 이쁘게하려고했는대 생각처럼안되고 힘드내요.

리플하나 꼭 받아보고 싶은대 부족하거나 문제있으면 피드백 부탁드립니다.

그래야 제가 더 공부를 ㅠㅠ

 

[##__##]

 objectStream.zip

4개의 파일로

Objcet 입력 /  출력 / 캐릭터 / 메인

이런식으로 구성되어 있다. 

캐릭터는 직렬화가 되어있어 ObjectStream이 가능하고

main으로 조작하여 입,출력 / 저장을 할 수 있는 프로그램이다.

그냥 보고 이렇구나하고 확인하려고 만든거임여. 

'Programming > Java' 카테고리의 다른 글

JDBC 를 Mysql에 연동해보자 (Eclipse + JDBC + Mysql)  (0) 2012.08.15
클래스(Class) 선언과 생성 그리고 변수선언  (0) 2012.03.22
컬렉션  (0) 2012.02.10
직렬화(Serialize)  (0) 2012.02.07
예외 처리 (Exception)  (0) 2012.01.11


'Programming > Java' 카테고리의 다른 글

클래스(Class) 선언과 생성 그리고 변수선언  (0) 2012.03.22
ObjectStream을 게임으로 생각해보자.  (0) 2012.02.14
직렬화(Serialize)  (0) 2012.02.07
예외 처리 (Exception)  (0) 2012.01.11
Thread  (0) 2012.01.10

객체를 Byte로 저장하며 객체가 메모리에 실행되는것은 순잔적인 메모리이기 때문에 이것을 지속적으로 보관하기 위해 사용된다.

즉 가상머신 내에 존재하는 특정 객체의 메모리를 바이트의 형태로 변환된다. 

Class Character implements Serializable { …… }
// 직렬화 하고자하는 클래스에
Serializable 를 구현시켜준다.
 

public static void main(String[] args){

//출력  ObjcetOutputStream oos = new ObjcetOutputStream(new FileOutputStream(“파일명”));

//입력  ObjcetInputStream ois = new ObjcetInputStream(new FileInputStream(“파일명”));

 
이럴경우 객체내에 변수들만 저장이 되게된다.

 
 메모리에서 볼경우 메소드는 호출할 때 힙영역에 잠시 생성되는 것일 뿐 실제로 존재하는 것은 아니다.  즉 직렬화를 하여 저장할 경우 스텍영역에 있는 변수들이 저장되게 되는것이다. 

'Programming > Java' 카테고리의 다른 글

ObjectStream을 게임으로 생각해보자.  (0) 2012.02.14
컬렉션  (0) 2012.02.10
예외 처리 (Exception)  (0) 2012.01.11
Thread  (0) 2012.01.10
이클립스 단축키 (펌)  (0) 2011.03.23

+ Recent posts