일반적으로 

Toast(토스트) 메세지는 꼭 볼 필요 없는 메세지를 전달할때 사용하고

Alert (경고창)은 무조건 보여주어야 하는 메세지를 전달할때 사용한다 

Progress Dialog는 어떠한 데이터를 가지고 오는데 사용



<?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:id="@+id/alert"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="경고창 띄우기" />
    <Button
        android:id="@+id/toast"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Toast 표시" />
	<Button
	    android:id="@+id/progress"
	    android:text="ProgressDialog 표시"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content" />
</LinearLayout>



package com.commonsware.android.messages;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MessageDemo extends Activity implements View.OnClickListener{
	Button alert, toast, progress;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		alert=(Button)findViewById(R.id.alert);
		alert.setOnClickListener(this);

		toast=(Button)findViewById(R.id.toast);
		toast.setOnClickListener(this);

		progress=(Button)findViewById(R.id.progress);
		progress.setOnClickListener(this);
	}
	public void onClick(View view){
		if(view==alert){
			new AlertDialog.Builder(this)
			.setTitle("에헴...")
			.setMessage("뭘봐?")
			.setNeutralButton("닫기",new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dlg, int sumthin) {
					// 기본적으로 창은 닫히고 추가 작업은 없다(닫히면서 행해지는 것)

				}
			})
			.show();
		}
		else if(view==toast){
			Toast
			.makeText(this,"토스트 메세지",Toast.LENGTH_SHORT)
			.show();
		}else{
			final ProgressDialog dialog = 
					//Context context : 실행중인 Activity객체
					//CharSequence title : 제목
					//CharSequence message : 메세지
					//boolean indeterminate : 원형 아이콘 또는 막대형태의 아이콘의 실행을 
					//유한/무한으로 지정할때 사용하는데 , 원형 아이콘일 경우는 무한만 설정됨  
					//막대형태의 아이콘일만 유한/무한 설정 가능
					ProgressDialog.show(this,"사이트 접속중"," 잠시만 기다려 주세요^,.^",true);
			//익명내부 클래스 형태의 스레드 생성
			new Thread(){
				public void run(){
					try{
						sleep(3000);
					}catch(InterruptedException e){
						e.printStackTrace();
					}
					//찾기 중지
					dialog.dismiss();
				}
			}.start();
		}
	}
}






<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" >
	<TextView
		android:id="@+id/selection"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
	/>
	<ListView
		android:id="@android:id/list"
		android:layout_width="fill_parent" 
		android:layout_height="fill_parent"
		android:drawSelectorOnTop="false"
		/>
</LinearLayout>



package com.commonsware.android.menus2;

import android.os.Bundle;
import android.app.ListActivity;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ContextMenuDemo extends ListActivity {
	TextView selection;
	String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
			"consectetuer", "adipiscing", "elit", "morbi", "vel",
			"ligula", "vitae", "arcu", "aliquet", "mollis",
			"etiam", "vel", "erat", "placerat", "ante",
			"porttitor", "sodales", "pellentesque", "augue", "purus"};

	@Override
	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		setContentView(R.layout.main);
		setListAdapter(new ArrayAdapter<string>(this,
				android.R.layout.simple_list_item_1, items));
		selection=(TextView)findViewById(R.id.selection);

		//컨텍스트 메뉴를 연결한 위젝의 인스턴스 등록
		registerForContextMenu(getListView());

	}

	public void onListItemClick(ListView parent, View v,int position, 
			long id) {
		selection.setText(items[position]);
	}

	//컨텍스트 메뉴 등록
	@Override
	public void onCreateContextMenu(ContextMenu menu, 
			View v,ContextMenu.ContextMenuInfo menuInfo){
		super.onCreateContextMenu(menu, v, menuInfo);

		/*
		 * groupid : 메뉴 아이템 그룹 지정, 미지정시 Menu.NONE=0 
		 * itemid : 메뉴 아이템에 부여된 ID
		 * order : 메뉴 아이템이 표시될 순서, 미지정시 Menu.NONE=0 
		 * title : 메뉴 아이템에 표시될 text
		 */
		menu.add(Menu.NONE,1,Menu.NONE,"16 픽셀");
		menu.add(Menu.NONE,2,Menu.NONE,"24 픽셀");
		menu.add(Menu.NONE,3,Menu.NONE,"32 픽셀");
		menu.add(Menu.NONE,4,Menu.NONE,"40 픽셀");
	}

	//컨텍스트 메뉴에서 발생하는 이벤트를 처리하는 이벤트 핸들러
	@Override
	public boolean onContextItemSelected(MenuItem item){

		switch(item.getItemId()){
		case 1:
			getListView().setDividerHeight(16);
			return true;
		case 2:
			getListView().setDividerHeight(24);
			return true;
		case 3:
			getListView().setDividerHeight(32);
			return true;
		case 4:
			getListView().setDividerHeight(40);
			return true;
		}
		return false;
	}
}



new ->folder(android folder가 있으면 그것을 클릭)





생성하고자하는 프로젝트 res에 접근해 menu라는 폴더 생성




메뉴 폴더에 우클릭 후 new ->other




menu.xml 파일 생성








메뉴


생성되면 하단에 menu.xml 에 접근하여
직접 코딩


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/seoul"
        android:title="서울"
        android:icon="@drawable/ic_launcher" />
    
    <item android:id="@+id/busan"
        android:title="부산"
        android:icon="@drawable/ic_launcher" />
   
    <item android:id="@+id/submenu"
        android:title="기타" >
    <menu>
        <item android:id="@+id/suwon"
        android:title="수원" />
        
        <item android:id="@+id/jeju"
        android:title="제주" />
        
    </menu>
</item>
</menu>



package com.comonsware.android.menus3;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

public class MenuXmlDemo extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        TextView myText = new TextView(this);
        myText.setText("메뉴에서 도시를 선택하세요");
        setContentView(myText);
    }
    
    //옵션 메뉴 생성
    public boolean onCreateOptionsMenu(Menu menu){
    	super.onCreateOptionsMenu(menu);
    	
    	//메뉴 인플레이션
    	//res/menu/menu.xml에 사용할 메뉴를 정의한 후에 Activity에서 menu.xml에 정의된
    	//메뉴를 사용하고자 할때 MenuInfalter 객체를 생성해서 xml 형태의
    	//메뉴 정보를 읽어들여서 Activity에서 사용할 수 있는 형태로 가공해서 메뉴를 등록하는 작업 수행
    	MenuInflater inflater = getMenuInflater();
    	inflater.inflate(R.menu.menu,menu);
    	
    	return true;
    }
    public boolean onOptionsItemSelected(MenuItem item){
    	switch(item.getItemId()){
    	case R.id.seoul:
    		Toast.makeText(this,"서울", Toast.LENGTH_SHORT).show();
    		return true;
    	case R.id.busan:
    		Toast.makeText(this,"부산", Toast.LENGTH_SHORT).show();
    		return true;
    	case R.id.suwon:
    		Toast.makeText(this,"수원", Toast.LENGTH_SHORT).show();
    		return true;
    	case R.id.jeju:
    		Toast.makeText(this,"제주", Toast.LENGTH_SHORT).show();
    		return true;
    	}
		return false;
    }
}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" >
	<TextView
		android:id="@+id/selection"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
	/>
	<ListView
		android:id="@android:id/list"
		android:layout_width="fill_parent" 
		android:layout_height="fill_parent"
		android:drawSelectorOnTop="false"
		/>
</LinearLayout>



package com.commonsware.android.menus;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.ListView;
import android.widget.ArrayAdapter;

public class MenuDemo extends ListActivity {
	TextView selection;
	String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
			"consectueuer", "adipiscing", "elit", "morbi", "vel", "ligula",
			"vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
			"placerat", "ante", "porttitor", "길다", "많다", "너무 많다", "너무 길다", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		//안드로이드에서 부모클래스의 메소드를 재정의해서 사용할때
		//부모클래스의 원래 메소드를 초기화 한후 메소드에 수행문을 명시해야함
		//일반적으로 Activity의  생명 주기와 관련된 메소드들은 재정의할때 
         //꼭원래 메소드를 호출해서 초기화 해야 하지만
		//다른 클래스의 경우는 생략 가능
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//ListView에 ArrayAdapter를 이용해 데이터 바인딩
		setListAdapter(new ArrayAdapter<string>(this,
				android.R.layout.simple_list_item_1, items));
		selection = (TextView) findViewById(R.id.selection);
	}

	//이벤트 핸들러
	public void OnListItemClick(ListView parent, View v, int position, long id) {
		selection.setText(items[position]);
	}

	// 옵션 메뉴 호출
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);

		/*
		 * groupid : 메뉴 아이템 그룹 지정, 미지정시 Menu.NONE=0 
		 * itemid : 메뉴 아이템에 부여된 ID
		 * order : 메뉴 아이템이 표시될 순서, 미지정시 Menu.NONE=0 
		 * title : 메뉴 아이템에 표시될 text
		 */
		menu.add(Menu.NONE, 1, Menu.NONE, "16 픽셀").setIcon(
				R.drawable.ic_launcher);
		menu.add(Menu.NONE, 1, Menu.NONE, "24 픽셀").setIcon(
				R.drawable.ic_launcher);
		SubMenu sub = menu.addSubMenu("기타");
		//서브 메뉴 생성(클릭시 팝업)
		sub.add(Menu.NONE, 3, Menu.NONE, "32픽셀");
		sub.add(Menu.NONE, 4, Menu.NONE, "40픽셀");

		return true;
	}
	
	//메뉴를 선택했을 때 동작하는 이벤트 핸들러
	public boolean onOptionsItemSeleted(MenuItem item) {
				//등록한 메뉴의 고유 id를 반환
		switch (item.getItemId()) {
		//getListView() : 현재 사용중인 ListView 객체 반환
		case 1:
			getListView().setDividerHeight(16);
			return true;
		case 2:
			getListView().setDividerHeight(24);
			return true;
		case 3:
			getListView().setDividerHeight(32);
			return true;
		case 4:
			getListView().setDividerHeight(40);
			return true;
		}
		return false;
	}
}



<?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" >

	<ViewFlipper 
	    android:id="@+id/details"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"
	    >
	    <ImageView
	        android:layout_width="fill_parent"
	        android:layout_height="fill_parent"
	        android:src="@drawable/jessica" />
	    <ImageView
	        android:layout_width="fill_parent"
	        android:layout_height="fill_parent"
	        android:src="@drawable/yuna" />
	    <ImageView
	        android:layout_width="fill_parent"
	        android:layout_height="fill_parent"
	        android:src="@drawable/taeyeon" />

	</ViewFlipper>
	<!-- android:orientation을 안쓰면 기본적으로 horizontal -->
	<LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:layout_weight="1" >
	    <Button android:id="@+id/flip_pre"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:layout_weight="1"
	        android:text="페이지 이전"
	        />
	    <Button android:id="@+id/flip_me"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:layout_weight="1"
	        android:text="다음 페이지"
	        />
	    </LinearLayout>
</LinearLayout>



package com.commonsware.android.flipper1;
//플리퍼 Flipper 화면을 동적으로 구현하고 싶을때 사용

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ViewFlipper;
import android.view.View;

public class FilipperDemo extends Activity implements View.OnClickListener{
	ViewFlipper flipper;
	Button btnPre, btnNext;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		flipper=(ViewFlipper)findViewById(R.id.details);

		btnPre = (Button)findViewById(R.id.flip_pre);
		btnNext= (Button)findViewById(R.id.flip_me);

		//이벤트 소스와 이벤트 리스너가 구현된 객체 연결
		btnPre.setOnClickListener(this);
		btnNext.setOnClickListener(this);
	}
	//이벤트 핸들러
	public void onClick(View view) {
		if(view.getId()==R.id.flip_me){
			flipper.showNext();
		}else{
			flipper.showPrevious();
		}

	}
}




'Android > 기본' 카테고리의 다른 글

Menu Xml (새로운 xml 파일 만들어 연결하기) 인플레이션  (0) 2012.04.28
메뉴 Menu  (0) 2012.04.28
Intent Tab 권한설정, Manifest.xml(설정)  (0) 2012.04.28
Tab 탭  (0) 2012.04.28
Chrono 시간 , 날짜 처리  (0) 2012.04.28






클래스 생성(프로젝트 생성은 생략)




클래스 생성후 extends Activity 하고 import 한다






Manifest.xml 접근


하단에 Application탭




add 클릭




Activity -> select->ok





우측 하단에 Attributes for Activity 필드가 생겼다.
name에 Browser






AndroidBrowser 추가



저장




Application Nodes 표시 변화



mainfest.xml확인







이제 권한 설정

다시manifest.xml접근





Permissions접근




Add




Uses Permission ->select -ok




Name -> adroid.permission.INTERNET select




save



manifest.xml 접근



바뀐 정보 확인




package com.commonsware.android.fancy2;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class AcornBrowser extends Activity{
	WebView browser;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        browser=new WebView(this);
        setContentView(browser);
        browser.loadUrl("http://acornpub.co.kr");
	}
}




package com.commonsware.android.fancy2;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class AndroidBrowser extends Activity{
    WebView browser;
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        browser = new WebView(this);
        setContentView(browser);
        browser.loadUrl("http://developer.android.com/index.html");
        
    }
}




package com.commonsware.android.fancy2;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;

public class IntentTabDemo extends TabActivity {
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     

        TabHost host = getTabHost();
        
        host.addTab(host.newTabSpec("one")
        		.setIndicator("에이콘")
        		.setContent(new Intent(this, AcornBrowser.class)));
        host.addTab(host.newTabSpec("two")
        		.setIndicator("안드로이드")
        		.setContent(new Intent(this, AndroidBrowser.class)));
    }
}




주의점은 Manifest.xml은 날코딩으로 바꾸는것이 좋지 않다고한다
그러므로 추가하여 바뀐정보를 확인할것 

'Android > 기본' 카테고리의 다른 글

메뉴 Menu  (0) 2012.04.28
플리퍼 Flipper (화면을 동적으로 구현하고 싶을때 사용)  (0) 2012.04.28
Tab 탭  (0) 2012.04.28
Chrono 시간 , 날짜 처리  (0) 2012.04.28
Gallery ImageView  (0) 2012.04.28
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <AnalogClock
                android:id="@+id/tab1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_centerHorizontal="true" />

            <Button
                android:id="@+id/tab2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="단순한 버튼" />
        </FrameLayout>
    </LinearLayout>

</TabHost>



package com.commonsware.android.fancy;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;

public class TabDemo extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		TabHost tabs = (TabHost) findViewById(R.id.tabhost);

		tabs.setup();

		//탭생성
		TabHost.TabSpec spec = tabs.newTabSpec("tag1");

		spec.setContent(R.id.tab1);
		spec.setIndicator("시계",
				getResources().getDrawable(R.drawable.ic_launcher));
		//탭 등록
		tabs.addTab(spec);

		//탭 생성
		spec = tabs.newTabSpec("tag2");
		spec.setContent(R.id.tab2);
		spec.setIndicator("버튼",
				getResources().getDrawable(R.drawable.ic_launcher));//아이콘
		//탭 등록
		tabs.addTab(spec);

		//어플리케이션 구동시 처음 보여지는 탭
		tabs.setCurrentTab(0);

	}
}





<?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" >

    <TextView
        android:id="@+id/dateAndTime"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
      />
    <Button
        android:id="@+id/dateBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="날짜 선택" />
    <Button
        android:id="@+id/timeBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="시간 선택" />

</LinearLayout>



package kr.android.chrono;

//Chrono 시간,날짜 처리

import android.app.TimePickerDialog;
import android.widget.TimePicker;
import java.text.DateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class ChronoDemo extends Activity {
	DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance();

	TextView dateAndTimeLabel;
	Calendar dateAndTime = Calendar.getInstance();
	
	//익명 내부 클래스 형태의 이벤트 처리(날짜 관련)
	DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
		//이벤트 핸들러
		//DatePicker view : DatePicker 객체
		//int year : 변경한 년도 전달
		//int monthOfYear : 변경한 월 전달
		//int dayOfMonth : 변경한 일 전달
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {

			dateAndTime.set(Calendar.YEAR, year);
			dateAndTime.set(Calendar.MONTH, monthOfYear);
			dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
			
			updateLabel();
			
		}
	};
	//익명 내부 클래스 형태의 이벤트 처리 (시간관련)
	TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener(){
	
		//이벤트 핸들러
		//TimePicker view : TimePicker 객체
		//int hourOfDay : 변경한 시간 전달
		//int minute : 변경한 분 전달
		public void onTimeSet(TimePicker view, int hourOfDay,int minute){
			dateAndTime.set(Calendar.HOUR_OF_DAY,hourOfDay);
			dateAndTime.set(Calendar.MINUTE,minute);
			updateLabel();
			
		}
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		//날짜를 셋팅하기 위한 버튼
		Button btn = (Button) findViewById(R.id.dateBtn);
		
		//버튼 클릭시 이벤트 처리
		btn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				//전달되는 인자
				//ChronoDemo.this : 사용중인 Activity 객체
				//d : DatePickerDialog 사용시 발생한 이벤트를 처리하는 객체
				//dateAndTime.get(Calendar.YEAR): 년도
				//dateAndTime.get(Calendar.MONTH) : 월
				//dateAndTime.get(Calendar.DAY_OF_MONTH) : 일
				new DatePickerDialog(ChronoDemo.this, d, dateAndTime
						.get(Calendar.YEAR), dateAndTime.get(Calendar.MONTH),
						dateAndTime.get(Calendar.DAY_OF_MONTH)).show();

			}
		});
		//시간을 셋팅하기 위한 버튼
		Button btn2 = (Button)findViewById(R.id.timeBtn);
		
		btn2.setOnClickListener(new View.OnClickListener() {
			
			//전달되는 인자
			//ChronoDemo.this : 사용중인 Activity 객체
			//t : TimePickerDialog 사용시 발생한 이벤트를 처리하는 객체
			//dateAndTime.get(Calendar.HOUR_OF_DAY): 시간
			//dateAndTime.get(Calendar.MINUTE) : 분
			public void onClick(View v) {
			new TimePickerDialog(ChronoDemo.this,t,
					dateAndTime.get(Calendar.HOUR_OF_DAY),
					dateAndTime.get(Calendar.MINUTE),
					true).show();		
			}
		});
		//날짜와 시간이 셋팅되는 TextView
		dateAndTimeLabel = (TextView) findViewById(R.id.dateAndTime);
		updateLabel();
	}
	//Calendar 객체의 날짜와 시간을 TextView에 매칭시키는 메소드
	private void updateLabel(){
		dateAndTimeLabel.setText(fmtDateAndTime.format(dateAndTime.getTime()));
	}
}


012


'Android > 기본' 카테고리의 다른 글

Intent Tab 권한설정, Manifest.xml(설정)  (0) 2012.04.28
Tab 탭  (0) 2012.04.28
Gallery ImageView  (0) 2012.04.28
AutoComplete 자동완성기능  (0) 2012.04.28
그리드 Grid  (0) 2012.04.28





<?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" >

    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:spacing="5px"
        android:animationDuration="1500" />
    
    <!-- android:animationDuration="1500"
    1000분의 1초 이미지 속도(슬라이딩?)    
     -->

</LinearLayout>



package kr.android.gallery;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
import android.view.View;
import android.view.ViewGroup;

public class GalleryTest extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//이벤트 소스
		Gallery g = (Gallery) findViewById(R.id.gallery);

		//Gallery에 ImageAdapter2를 이용해서 데이터 바인딩
		g.setAdapter(new ImageAdapter2(this));

		//익명 내부 클래스 형식의 이벤트 처리
		g.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<!--?--> parent, View v,
					int position, long id) {
				//공지 (알림 메세지)처리를 위해 Toast 객체 생성
				//Toast = 단순 공지(알림)
				Toast.makeText(GalleryTest.this, position + "번째 이미지",
						Toast.LENGTH_SHORT).show();
			}
		});
	}
}
//사용자 정의 Adapter 클래스
class ImageAdapter2 extends BaseAdapter{
	//추상 클래스 (get시리즈 갖고있음)
	private Context cxt;
	//이미지 저장소
	private int[] mImageIds ={
			R.drawable.a,
			R.drawable.b,
			R.drawable.c,
			R.drawable.d,
			R.drawable.e,
			R.drawable.f,
			R.drawable.g,
			R.drawable.h,
			R.drawable.i,
	};
	//생성자
	public ImageAdapter2(Context cxt){
		this.cxt = cxt;
	}
	//아이템의 갯수
	public int getCount(){
		return mImageIds.length;
	}
	//전달되는 position에 해당하는 데이터 반환
	public Object getItem(int position){
		return mImageIds[position];
	}
	//전달되는 position반환(데이터 베이스 연동시 프라이머리키를 대입시켜서 사용)
	public long getItemId(int position) {
		return position;
	}
	
	//ImageView를 생성해서 Gallery에 데이터 바인딩하는 메소드
	//전달되는 인자
	//int position : position 정보
	//View convertView : 데이터가 표시되는 객체
	//ViewGroup parent : 사용중인 Gallery 객체
	public View getView(int position, View convertView, ViewGroup parent){
		ImageView imageView;

		if(convertView == null){
			imageView = new ImageView(cxt);
		}else{
			imageView = (ImageView)convertView;
		}

		imageView.setImageResource(mImageIds[position]);
		imageView.setScaleType(ImageView.ScaleType.FIT_XY);
		imageView.setLayoutParams(new Gallery.LayoutParams(300,150));

		return imageView;
	}

}



'Android > 기본' 카테고리의 다른 글

Tab 탭  (0) 2012.04.28
Chrono 시간 , 날짜 처리  (0) 2012.04.28
AutoComplete 자동완성기능  (0) 2012.04.28
그리드 Grid  (0) 2012.04.28
스핀 컨트롤 Spinner  (0) 2012.04.28
<?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" >

    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         />
    <AutoCompleteTextView 
        android:id="@+id/edit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="3"
        />
    
    <!--   android:completionThreshold="3" 3글자 이상 입력시
			(AutoCompleteTextView) 는 평소에 숨겨져 있다가 위에 조건이 만족하면 출력됨    
			여러개의 데이터를 표시할때는 listview가 좋다
     -->
</LinearLayout>
package com.commonsware.android.selection9;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;

public class AutoCompleteDemo extends Activity implements TextWatcher {
	TextView selection;
	AutoCompleteTextView edit;
	String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
			"consectueuer", "adipiscing", "elit", "morbi", "vel", "ligula",
			"vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
			"placerat", "ante", "porttitor", "길다", "많다", "너무 많다", "너무 길다", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		selection = (TextView) findViewById(R.id.selection);
		edit = (AutoCompleteTextView) findViewById(R.id.edit);
		edit.addTextChangedListener(this);

		//ArrayAdapter : AutoCompleteTextView 데이터 바인딩
		//ArrayAdapter와 AutoCompleteTextView 연결
		edit.setAdapter(new ArrayAdapter<string>(this,
				android.R.layout.simple_dropdown_item_1line, items));
	}

	public void afterTextChanged(Editable s) {
		// TODO Auto-generated method stub

	}

	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {
		// TODO Auto-generated method stub

	}

	public void onTextChanged(CharSequence s, int start, int before, int count) {
		selection.setText(edit.getText());

	}
}



'Android > 기본' 카테고리의 다른 글

Chrono 시간 , 날짜 처리  (0) 2012.04.28
Gallery ImageView  (0) 2012.04.28
그리드 Grid  (0) 2012.04.28
스핀 컨트롤 Spinner  (0) 2012.04.28
ListActivity 사용  (0) 2012.04.28
<?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" >

    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
<!-- 
android:setretchMode="columnWidth|spacingWidth"
열 내부에 여유 공간이 생겼을때 그여유 공간에 대한 처리 방법지정

columnWidth로 지정하면 남는 공간을 각각의 열에 배분해서 열의 넓이를 늘리는 효과

spacingWidth로 지정하면 남는 공간을 열과 열사이의 여백에 배분해서 열사이의 여백의
넓이를 늘리는 효과

 -->
    <GridView
        android:id="@+id/grid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:verticalSpacing="35dp"
        android:horizontalSpacing="5dp"
        android:numColumns="auto_fit"
        android:columnWidth="100dp"
        android:stretchMode="columnWidth"
        android:gravity="center" 
        android:drawSelectorOnTop="false"/>
    
</LinearLayout>
package com.commonsware.android.selection8;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;

public class GridDemo extends Activity implements
AdapterView.OnItemClickListener {
	//이벤트 리스너

	TextView selection;
	String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
			"consectueuer", "adipiscing", "elit", "morbi", "vel", "ligula",
			"vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
			"placerat", "ante", "porttitor", "길다", "많다", "너무 많다", "너무 길다", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		selection = (TextView) findViewById(R.id.selection);

		//이벤트 소스
		GridView g = (GridView) findViewById(R.id.grid);

		//ArrayAdapter를 상속받아서 정의한 FunnyLookingAdapter 등록
		g.setAdapter(new FunnyLookingAdapter(this,
				android.R.layout.simple_list_item_1, items));

		//이벤트 소스와 이벤트 리스너가 구현된 객체 연결
		g.setOnItemClickListener(this);
	}

	//이벤트 핸들러 
	public void onItemClick(AdapterView adapter, View v, int position,
			long id) {
		selection.setText(items[position]);
	}

	//내부 클래스
	private class FunnyLookingAdapter extends ArrayAdapter<string> {
		Context ctxt;

		FunnyLookingAdapter(Context ctxt, int resource, String[] items) {
			super(ctxt, resource, items);

			this.ctxt=ctxt;
		}
		//ArrayAdapter의 getView재정의
		//데이터 바인딩시 getView 호출됨
		//전달되는 인자
		//int position : 데이터가 바인딩될 위치 정보
		//View convertView : position에 데이터를 처리할 객체
		//ViewGroup parent : 사용중인 GridView객체
		public View getView(int position, View convertView,ViewGroup parent){
			TextView label=(TextView)convertView;

			if(convertView ==null){
				convertView =new TextView(ctxt);
				label=(TextView)convertView;
			}
			label.setText(items[position]);

			return(convertView);
		}
	}
}



'Android > 기본' 카테고리의 다른 글

Gallery ImageView  (0) 2012.04.28
AutoComplete 자동완성기능  (0) 2012.04.28
스핀 컨트롤 Spinner  (0) 2012.04.28
ListActivity 사용  (0) 2012.04.28
ListActivity ArrayAdapter  (0) 2012.04.28
<?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" >

    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true" />
</LinearLayout>
package com.commonsware.android.selection7;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class SpinnerDemo extends Activity implements
		AdapterView.OnItemSelectedListener {
		//이벤트 리스너

	TextView selection;
	String[] items = { "lorem", "ipsum", "dolor", "sit", "amet",
			"consectueuer", "adipiscing", "elit", "morbi", "vel", "ligula",
			"vitae", "arcu", "aliquet", "mollis", "etiam", "vel", "erat",
			"placerat", "ante", "porttitor", "길다", "많다", "너무 많다", "너무 길다", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		selection = (TextView) findViewById(R.id.selection);

		//이벤트 소스
		Spinner spin = (Spinner) findViewById(R.id.spinner);
		
		//이벤트 소스와 이벤트 리스너가 구현된 객체 연결
		spin.setOnItemSelectedListener(this);

		//어댑터를 이용해 데이터 셋팅
		ArrayAdapter<string> aa = new ArrayAdapter<string>(this,
				android.R.layout.simple_spinner_dropdown_item, items);

		//드롭다운  화면에 표시할 리소스 지정
		aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		
		//ArrayAdapter를 Spinner에 등록
		spin.setAdapter(aa);
	}

	//이벤트 핸들러
	//전달된 인자
	//AdapterView parent : 이벤트가 발생한 Spinner 객체
	//(제네릭 표현을 써야됨 쓰고싶지 않을때,노란줄이 가더라도 안쓰는것이 좋음)  = Object
	//view v : Spinner 하위 객체의 이벤트가 발생한 객체 
	//position : 이벤트가 발생한 위치
	//id : position = id
	public void onItemSelected(AdapterView parent, View v, int position,
			long id) {
		selection.setText(items[position]);
	}
	//이벤트 핸들러
	public void onNothingSelected(AdapterView parent) {
		selection.setText("");
	}
}



'Android > 기본' 카테고리의 다른 글

AutoComplete 자동완성기능  (0) 2012.04.28
그리드 Grid  (0) 2012.04.28
ListActivity 사용  (0) 2012.04.28
ListActivity ArrayAdapter  (0) 2012.04.28
Android Table Layout  (0) 2012.04.28
<?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" >

    
    <!-- hint = 입력시 없어짐(입력하기 전에 보여지는 텍스트) -->
    <EditText
        android:id="@+id/myEditText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="새 해야 할 일" />
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" />

</LinearLayout>
package kr.android.listview2;
//ListActivity 사용하기 ArrayList사용하여 추가 삭제기능

import java.util.ArrayList;
import android.app.ListActivity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.os.Bundle;

public class ListViewDemo2 extends ListActivity implements OnKeyListener {
												//이벤트 리스너
	ArrayList<string> todoItems;
	ArrayAdapter<string> aa;
	EditText myEditText;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//이벤트 소스
		myEditText = (EditText) findViewById(R.id.myEditText);

		//데이터 저장소 생성
		todoItems = new ArrayList<string>();
		
		//ArrayList와 ListView 데이터 바인딩
		aa = new ArrayAdapter<string>(this,
				android.R.layout.simple_list_item_1, todoItems);

		//ArrayAdapter를 ListView에 등록
		setListAdapter(aa);

		//이벤트 소스와 이벤트 리스너가 구현된 객체 연결
		myEditText.setOnKeyListener(this);
	}

	//전달된 인자
	//View v : 이벤트 발생 객체
	//int keyCode : 입력한 키
	//KeyEvent event : KeyEvent 객체
	public boolean onKey(View v, int keyCode, KeyEvent event) {
		if (event.getAction() == KeyEvent.ACTION_DOWN) {
			if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
				
				//저장소에 데이터 저장(index 0에 데이터 저장)만약 기존 데이터가 있으면,
				//신규 데이터는 index0에 저장 기존데이터는 다음 index에 저장
				todoItems.add(0, myEditText.getText().toString());
				
				//데이터 저장소로부터 데이터를 새롭게 읽어들여서 ListView를 갱신
				aa.notifyDataSetChanged();
				
				//빈문자열로 다시 만들어 입력을 받게끔
				myEditText.setText("");
				return true;
			}
		}
		return false;
	}
}






<?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
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >


        <EditText
            android:id="@+id/newitem"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:text="Add" />

        <Button
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:text="Del" />
    </LinearLayout>

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:choiceMode="singleChoice" />

</LinearLayout>
package kr.android.listview3;

import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class ListViewDemo3 extends ListActivity {
	ArrayList<string> items;
	ArrayAdapter<string> adapter;
	ListView list;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//데이터 저장소 생성 및 초기 데이터 설정
		items = new ArrayList<string>();
		items.add("First");
		items.add("Second");
		items.add("Third");

		//ArrayList에 있는 데이터를 ListView에 바인딩
		adapter = new ArrayAdapter<string>(this,
				android.R.layout.simple_list_item_single_choice, items);

		//ArrayAdapter를 ListView에 등록
		setListAdapter(adapter);

		//onClick에 두개를 진입하기 위해 설정 (이렇게 안하면 코드가2배)
		//이벤트 소스와 이벤트를 처리해주는 객체 연결
		findViewById(R.id.add).setOnClickListener(mClickListener);
		findViewById(R.id.delete).setOnClickListener(mClickListener);
	}
	//익명내부 클래스 형태의 이벤트 처리
	Button.OnClickListener mClickListener = new View.OnClickListener(){
		public void onClick(View v){
			EditText ed = (EditText)findViewById(R.id.newitem);
			switch(v.getId()){ //이벤트가 발생한 객체의 id
			case R.id.add:
				String text = ed.getText().toString();
				if(text.length() != 0){
					items.add(0,text);
					ed.setText("");
					adapter.notifyDataSetChanged();
				}
				break;
			case R.id.delete:
				int id;
				//현재 동작하는 ListView객체 반환
				list = getListView();
				id=list.getCheckedItemPosition();
				//getCheckedItemPosition()으로부터 반환받은
				//position이 정상적인 position인지 검증
				if(id != ListView.INVALID_POSITION){
					//데이터 삭제
					//ArrayList 데이터 삭제
					items.remove(id);
					
					//라디오 버튼을 선택하지 않은 것으로 초기화
					list.clearChoices();
					
					//ArrayList에 변경된 데이터를 다시 읽어들여
					//ListView를 갱신
					adapter.notifyDataSetChanged();
				}
				break;
			}
		}
	};
}



'Android > 기본' 카테고리의 다른 글

그리드 Grid  (0) 2012.04.28
스핀 컨트롤 Spinner  (0) 2012.04.28
ListActivity ArrayAdapter  (0) 2012.04.28
Android Table Layout  (0) 2012.04.28
Android Frame Layout  (0) 2012.04.28
<?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" >

    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <!--
         @android:id/list = 반드시 java에 ListActivity를 상속(extends) 시켜야됨 
		
		android: =     Android.R.id.list
		
		http://developer.android.com/reference/android/R.id.html
		http://developer.android.com/reference/android/R.id.html#list
		
		(교제112p)
		
		+를 넣으면 생성
		+가 없기 때문에 기존에 만들어진것을 호출하여 사용

    -->

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" />
    <!--
	android:drawSelectorOnTop="false"
	위에 Selector를 그리지 않겠다
	default : false
	true 하면 글씨가 보이지 않음
	layout을 wrap_content로하면 안됨
	wrap_content를 쓰면 속으로 에러가 발생(부하)
	오직 fill_parent만 
    -->

</LinearLayout>
package com.commonsware.android.selection;

//ArrayAdapter

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ArrayAdapter;

//main.xml 에 @android:id/list = 
//반드시 java에 ListActivity를 상속(extends) 시켜야됨
//ListActivity 
public class ListViewDemo extends ListActivity {
	//Activity + 이벤트 리스너
	TextView selection;
	String[] items = { "lorem", "ipsum", "dolor", "sit",
			"amet", "consectueuer", "adipiscing", "elit", "morbi", "vel",
			"ligula", "vitae", "arcu", "aliquet", "mollis", "etiam", "vel",
			"erat", "placerat", "ante", "porttitor", "길다", "많다", "너무 많다",
			"너무 길다", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		//(this = ListViewDemo) 
		//(simple_list_item_1 텍스트를 표현한 뷰 객체 (생성되어 
		//      있어서 호출하여사용)) (items= 위에 써놓은 아이템) 
		setListAdapter(new ArrayAdapter<string>(this,
				android.R.layout.simple_list_item_1, items));

		//클릭시 데이터 표시하기 위한 객체 생성
		selection = (TextView) findViewById(R.id.selection);
	}

	//position 은 배열처럼 0부터의 값을 갖고있고 순차적으로 밑으로 내려갈수록 번호가 늘어남
	//그번호로 ArrayAdapter로  뿌려지게됨
	//이벤트 핸들러 ,리스너는 ListActivity가 가지고 있음(클래스 형태의 이벤트 리스너 역할)
	//OnListItemClick 재정의하여 사용
	//ListView parent = ListView 객체
	//View v = 클릭(터치)한 라인의 데이터를 처리하는 View 객체
	//int position = 이벤트가 발생한 위치값(0부터 시작)
	//long id = ArrayAdapter를 사용할 경우는 position = id
	public void onListItemClick(ListView parent, View v, int position, long id) {
		selection.setText(items[position]+",position : "+position);
	}
}



'Android > 기본' 카테고리의 다른 글

스핀 컨트롤 Spinner  (0) 2012.04.28
ListActivity 사용  (0) 2012.04.28
Android Table Layout  (0) 2012.04.28
Android Frame Layout  (0) 2012.04.28
Android Relative Layout  (0) 2012.04.28

+ Recent posts