<?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
<?xml version="1.0" encoding="utf-8"?>
<!--  테이블 짜기 권장방법 -->
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<TableRow>
    <TextView
        android:text="국어"
        android:textSize="30sp"
        android:padding="10dp" />
    <TextView
        android:text="영어"
        android:textSize="30sp"
        android:padding="10dp" />
    <TextView
        android:text="수학"
        android:textSize="30sp"
        android:padding="10dp" />
</TableRow>
<TableRow>
    <TextView
        android:text="88"
        android:textSize="30sp"
        android:padding="10dp" />
    <TextView
        android:text="92"
        android:textSize="30sp"
        android:padding="10dp" />
    <TextView 
        android:text="76" 
        android:textSize="30sp"
        android:padding="10dp" />
</TableRow>
</TableLayout>



<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1" >
    <!-- 
    android:stretchColumns = 하나이상의 열 번호를 쉼표로 연결해서 지정 지정된
    번호의 열은 해당하는 행에서 남아 있는 공간을 없앨 수 있을 만큼 폭이 늘어남
    
    android:layout_column = 열번호 지정 (0번 부터 시작)
    
    android:layout_span = 두개 이상의 열에 걸쳐 배치할 때 열을 합쳐 표시할 때 사용
    
    android:shrinkColumns = 하나 이상의 열번호를 쉼표로 연결해서 지정 지정된
    열은 텍스트를 줄 내림하는 등의 방법으로 차지하는 폭을 최대한 줄인다.(기본 설정으로는
    텍스트를 줄 내림하지 않음) 일부 열의 내용이 많아져서 테이블 일부가 화면 밖으로
    밀려나갈 가능성이 있다면 지정
     -->

    <TableRow>
        <TextView 
            android:text="URL:" />
        <EditText android:id="@+id/entry"
            android:layout_span="3" />               
    </TableRow>
    <!-- 수평선 구현 -->
    <View
        android:layout_height="2px"
        android:background="#0000ff" />
    <TableRow>
        <Button
            android:id="@+id/cancel"
            android:layout_column="2"
            android:text="취소" />
        <Button 
            android:id="@+id/ok"
            android:text="확인" />        
    </TableRow>
</TableLayout>



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

ListActivity 사용  (0) 2012.04.28
ListActivity ArrayAdapter  (0) 2012.04.28
Android Frame Layout  (0) 2012.04.28
Android Relative Layout  (0) 2012.04.28
Android Margin Padding  (0) 2012.04.28
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Push Button" />
    <ImageView 
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/pride"
        />

</FrameLayout>
package kr.android.layout8;

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

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

		//이벤트 소스
		Button btn = (Button)findViewById(R.id.btn);

		//익명 내부 클래스 형태의 이벤트 처리
		btn.setOnClickListener(new Button.OnClickListener(){
			
			//이벤트 핸들러
			public void onClick(View v){
				ImageView img = (ImageView)findViewById(R.id.img);
				//View.VISIBLE : 보여짐
				//View.INVISIBLE : 안보여짐
				//View.GONE : 안보여지면서 해당 위치에서 제거
				if(img.getVisibility() == View.VISIBLE){
					img.setVisibility(View.INVISIBLE);
				}else{
					img.setVisibility(View.VISIBLE);
				}
			}
		});
	}
}



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

ListActivity ArrayAdapter  (0) 2012.04.28
Android Table Layout  (0) 2012.04.28
Android Relative Layout  (0) 2012.04.28
Android Margin Padding  (0) 2012.04.28
Android LinearLayout 가중치  (0) 2012.04.28


RelativeLayout


위       android:layout_above

아래    android:layout_below

왼쪽    android:layout_toRightof

오른쪽 android:layout_below


상단위치일치       android:layout_alignTop

하단위치일치       android:layout_alignBottm

왼쪽위치일치       android:layout_alignLeft

오른쪽위치일치    android:layout_alignRight

텍스트기준선일치 android:layout_alignBaseline



 기준 View를 이용한 좌우 배치


ex)

       <Button

            android:id="@+id/ok"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignRight="@id/entry"

          android:layout_below="@id/entry"

            android:text="확인" />


 기준 Layout을 이용하여 상단 하단 배치



<Button

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentBottom="true"

          android:layout_alignParentRight="true"

            android:text="하단우측배치" />



이미지

    

View.VISIBLE   : 보여짐 //자리차지

View.INVISIBLE : 안 보여짐 //차리차지

View.GONE      : 안 보여지면서 해당 위치에서 제거 //차리안차지



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5px" >

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="URL"
        android:paddingTop="15px"/>
    <EditText
        android:id="@+id/entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/label"
        android:layout_alignBaseline="@id/label" />
    <Button
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/entry"
        android:layout_alignRight="@id/entry"
        android:text="취소" />
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/cancel"
        android:layout_alignTop="@id/cancel"
        android:text="확인" />

</RelativeLayout>


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5px" >

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="URL"
        android:paddingTop="15px"/>
    <EditText
        android:id="@+id/entry"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/label"
        android:layout_alignBaseline="@id/label" />
    <Button
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/entry"
        android:layout_alignRight="@id/entry"
        android:text="취소" />
    <Button
        android:id="@+id/ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/cancel"
        android:layout_alignTop="@id/cancel"
        android:text="확인" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="하단 우측 배치"
        />
</RelativeLayout>



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

Android Table Layout  (0) 2012.04.28
Android Frame Layout  (0) 2012.04.28
Android Margin Padding  (0) 2012.04.28
Android LinearLayout 가중치  (0) 2012.04.28
Linear Layout gravity  (0) 2012.04.28

패딩(Padding)


                                                     패딩(padding)과 마진(margin)





<?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:layout_marginTop="50px"
        android:layout_marginLeft="50px"
        android:layout_marginRight="50px"
        android:layout_marginBottom="50px"
        android:text="마긴테스트" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="50px"
        android:paddingLeft="50px"
        android:paddingRight="50px"
        android:paddingBottom="50px"
        android:text="패딩" />

</LinearLayout>



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

Android Frame Layout  (0) 2012.04.28
Android Relative Layout  (0) 2012.04.28
Android LinearLayout 가중치  (0) 2012.04.28
Linear Layout gravity  (0) 2012.04.28
Linear Layout orientation  (0) 2012.04.28

가중치(Weight)

배치할때 View의 비율을 정해줌


보통 2개를 비교해 가중치를 준다.

0(최소),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" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Tool_Bar"
        android:layout_weight="0"
         />
    
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
    
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Menu_Bar"
        android:layout_weight="0" />

</LinearLayout>




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

Android Relative Layout  (0) 2012.04.28
Android Margin Padding  (0) 2012.04.28
Linear Layout gravity  (0) 2012.04.28
Linear Layout orientation  (0) 2012.04.28
Android Log Cat 사용 ,전화 걸기 문자 보내기 기능  (0) 2012.04.28

+ Recent posts