PAN 테스트 app 를 만들어야 할 때 app를 전혀 알지 못하는 나로서는 무척 힘들게 느껴졌다. 그 때 이 글을 보고 감을 잡기 시작했다.

[펌] http://androiddeveloper.tistory.com/47

글이 많이 늦었습니다.
교육 듣느라 취업준비하느라 많이 늦었습니다.

오늘은 간단하게 버튼을 이용해서 그림을 출력하는 것을 해보겠습니다.
UI구성은 버튼4개와 이미지뷰1개 텍스트뷰1개 이고
필요한 파일은 아무 이미지파일 4개를 준비하면 됩니다.

버튼에서 쓸 속성은 클릭이벤트처리
setOnClickListener
이미지뷰에 그림을 할당하는
setImageResource
텍스트뷰에 문자열을 할당하는
setText
입니다.


자 그럼 프로젝트를 생성해야겠지요.

Project name : ExamButtonImage
Build Target : Android 2.1
Package name : jsh.android.exambuttonimage
Create Activity : main
Min SDK Version : 7


프로젝트를 생성하시고 자신이 준비한 이미지파일을 먼저 넣어줍니다.
파일이름은 소문자영어로 Drawable-hdpi에 넣어줍니다.


그 다음 xml로 넘어가서 버튼4개와 이미지뷰 텍스트뷰를 생성합니다.


XML 소스

main.xml

<?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">
 <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/linearLayout1"
  android:orientation="horizontal">
  <Button
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Button"></Button>
  <Button
   android:id="@+id/button2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Button"></Button>
  <Button
   android:id="@+id/button3"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Button"></Button>
  <Button
   android:id="@+id/button4"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Button"></Button>
 </LinearLayout>
 <ImageView
  android:id="@+id/imageView1"
  android:layout_gravity="center"
  android:layout_width="200dp"
  android:layout_height="300dp"></ImageView>
 <TextView
  android:text="TextView"
  android:gravity="center"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/textView1"
  android:layout_gravity="center"></TextView>
</LinearLayout>



자바 소스

mainpage.java

package jsh.android.exambuttonimage;

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

public class main extends Activity implements OnClickListener {

 Button bt, bt2, bt3, bt4;
 ImageView iv;
 TextView tv;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // xml에 불러온 이미뷰를 bt에 넣어 속성사용 하기위한 구문
  bt = (Button) findViewById(R.id.button1);
  bt2 = (Button) findViewById(R.id.button2);
  bt3 = (Button) findViewById(R.id.button3);
  bt4 = (Button) findViewById(R.id.button4);

  // 버튼에 클릭이벤트 처리
  bt.setOnClickListener(this);
  bt2.setOnClickListener(this);
  bt3.setOnClickListener(this);
  bt4.setOnClickListener(this);

  // xml에 불러온 이미뷰를 iv에 넣어 속성사용 하기위한 구문
  iv = (ImageView) findViewById(R.id.imageView1);
  // xml에 불러온 텍스트뷰를 tv에 넣어 속성사용 하기위한 구문
  tv = (TextView) findViewById(R.id.textView1);

 }

 @Override
 public void onClick(View arg0) {
  // TODO Auto-generated method stub

  switch (arg0.getId()) {

  case R.id.button1:

   // 이미지뷰에 사진을 출력하는 구문
   iv.setImageResource(R.drawable.test1);
   // 텍스트뷰에 문자열 출력하는 구문
   tv.setText("test1 사진");

   break;

  case R.id.button2:

   iv.setImageResource(R.drawable.test2);
   tv.setText("test2 사진");

   break;

  case R.id.button3:

   iv.setImageResource(R.drawable.test3);
   tv.setText("test3 사진");

   break;

  case R.id.button4:

   iv.setImageResource(R.drawable.test4);
   tv.setText("test4 사진");

   break;

  }

 }
}


실행 결과



실행 결과는
버튼 4개에 연결된 이미지가
버튼을 누를 때 그림과 텍스트가 바뀌면 잘되는 것입니다.

수고하셨습니다.

 

 






 


'Linux 일반 > Programming' 카테고리의 다른 글

Unable to start activity ComponentInfo 에러  (0) 2011.12.06
interface, implements  (0) 2011.12.01
Java Interface 특징과 사용방법  (0) 2011.12.01
androidmenifest.xml permission 종류  (0) 2011.11.28
C와 JAVA 구조체 비교  (0) 2011.11.23

이 에러로 헤매고 있을 때 인터넷에서 검색해서 찾았다.

eclipse 버그 같은데 application을 잘 몰라서 그냥 그대로 따라 하기만 한다.

[펌] http://marga.tistory.com/580

Unable to start activity ComponentInfo 에러

안드로이드에서 가끔 Unable to start activity ComponentInfo 에러가 발생하는 경우가 있다.

시작 Activity와 관련이 있기 때문에 이 경우 시작과 관련된 부분을 검토 해 보면 되는데,
시작 Activity의 setContentView() 부분이나, AndroidManifest.xml 파일의 내용 등을 확인 해 보면 된다.

그런데, 아주 가끔 아무 이유도 없이, 아무 이상도 없는데도 Unable to start activity ComponentInfo 오류가 발생한다.

이럴때는, AndroidManifest.xml 파일에 임의 주석을 추가 한다던지 등의 프로그램과 관련 없는 내용을 수정하여 AndroidManifest 파일에게 변경을 인식하게 해 주고 원상복귀 하여 저장 후 실행하면 정상적으로 작동하기도 한다.

[펌] http://www.cyworld.com/listentossoo/272880


interface는 추상클래스와 성격이 비슷하다.

추상메소드를 갖는것, 객체를 생성할 수 없는 것, 상속받은 서브클래스에서 메소드 정의 해주는 것 등.

static 메소드는 올수 없고, 메소드는 기본적으로 public성질을 갖고 있다. 그러므로 오버라이딩 하여 쓸 때에는 public을 꼭 써주어야 한다.

interface 에서 선언한 멤버필드는 상수이다.

(public static final)의 속성을 갖고 있다.

 

 

 

차이점 : interface는 다중상속, 추상클래스는 단일 상속

추상클래스에선 일반 메소드의 구현이 가능 하지만 interface 에서는  오직 메소드 선언만 가능

서브클래스에서 메소드를 모두 오버라이딩 해주지 않으며 그 클래스는 abstract선언을 해 주어야 한다.

 

 

interface로 선언된 클래스를 일반 클래스가 상속 받을 때

implements를 사용한다.

 

interface끼리의 상속은 extends를 사용한다

 

 

 

예>

interface A {

//이곳에 정의된 필드는 정의 하지 않아도 상수속성(public, static,fianl)을 갖는다.
public String methodA(String s);
}   // interface다중상속이 가능하다. 추상메소드와 같이 메소드 선언만 한다

 

 

 

class Kor implements A //interface의 상속 지정어 implements

//interface class에 선언된 메소드를 여기서 전부 구현해 놓지 않으려면 이 클래스를 추상클래스로 선언해 두어야 한다.
{
 public String methodA(String g) {   
//상속받은 메소드 실질 구현( 오버라이딩 )
  return g + "반갑다 ";
 }
}

 

 


public class Ame
{
 public static void main(String args[]){
     A a = new Kor()
//다형성 -부모값부터 찾고 존재하면 자식것을 가져온다. 부모에 값이 없으면, Error, 부모에 있고 자식에 없으면 부모것을 가져옴.
  String h = a.methodA("안녕 ");
  System.out.println(h);
 }
};

[펌] http://blog.naver.com/syunge75?Redirect=Log&logNo=120137454086


1. Interface란

추상클래스와 final변수로만 이루어진 클래스이며 일반 클래스가 인터페이스를 구현해 주어야 상속이 가능하다.

클래스가 상속을 통해 구현하는데 한계가 있는 경우 자바에서 불가능한 다중상속을 흉내내기 위한 도구이다.



2. Interface의 특징

- 구현된 메소드는 올 수 없고 추상 메소드만 정의할 수 있다.

- 일반 클래스는 여러 interface를 다중 상속 할 수 있다.

인터페이스 간의 상속에서는 다중상속이 제공된다.

- 상속을 받은 일반 클래스는 interface의 추상메서드를 모두 재정의 해야 한다.



3. 사용방법

// 인터페이스 정의

public interface [인터페이스명]{

    상수형 변수;
    abstract public [반환 타입][메소드명](매개변수);
}

// 일반 클래스에서 사용
public class [자식 클래스명A] implements[인터페이스명]{
    필드;
    메소드;
}


// 다중 상속

public class [자식 클래스명B] implements[인터페이스명1][인터페이스명2], ..., [인터페이스명n] {

    필드;
    메소드;
}



4. 예제 소스



 //인터페이스 선언

public interface IBicycle {

       //상수선언

       int FrameSize_L = 18;

       int FrameSize_M = 16;

       int FrameSize_S = 15;

       //추상메소드 선언

       abstract void prtInfo();

}

 

 

public class Minivelo implements IBicycle{

       //멤버변수 추가

       int id;

       String brand;

       //오버라이딩 추상 메소드

       public void prtInfo(){

             System.out.println("ID : " +id);

             System.out.println("Brand : " + brand);

             //인터페에스에서 제공 하는 상수 사용

             System.out.println("Frame Size : " + IBicycle.FrameSize_M);

       }

      

       public static void main(String[] args){

             Minivelo mv = new Minivelo();

             mv.id = 200;

             mv.brand = "Dahon";

             mv.prtInfo();

       }

}


[펌] http://polomin.tistory.com

Permission 종류
ACCESS_CHECKIN_PROPERTIES      체크인데이터베이스의_속성테이블로_액세스                       
ACCESS_COARSE_LOCATION         코스_로케이션_액세스_(Cell-ID/WiFi)                            
ACCESS_FINE_LOCATION           파인로케이션_액세스(GPS)                                       
ACCESS_LOCATION_EXTRA_COMMANDS 로케이션_옵션_커맨드_액세스                                    
ACCESS_MOCK_LOCATION           목_로케이션_프로바이더_생성_(테스트용)                         
ACCESS_NETWORK_STATE           네트워크_상태_접근                                             
ACCESS_SURFACE_FLINGER         서피스_플링거_접근                                             
ACCESS_WIFI_STATE              WiFi상태_접근                                                  
ADD_SYSTEM_SERVICE             시스템서비스_추가                                              
BATTERY_STATS                  배터리_상태                                                    
BLUETOOTH                      블루투스                                                       
BLUETOOTH_ADMIN                블루투스_어드민                                                
BRICK                          디바이스_실효성_지정                                           
BROADCAST_PACKAGE_REMOVED      제거된_패키지에_대한_notification_브로드캐스트                 
BROADCAST_SMS                  SMS에_대한_브로드캐스트                                        
BROADCAST_STICKY               인텐트_브로드캐스트                                            
CALL_PHONE                     통화                                                           
CALL_PRIVILEGED                통화(긴급전화_포함)                                            
CAMERA                         카메라                                                         
CHANGE_COMPONENT_ENABLED_STATE 컴포넌트의_실효성_변경                                         
CHANGE_CONFIGURATION           컨피그_변경                                                    
CHANGE_NETWORK_STATE           통신상태_변경                                                  
CHANGE_WIFI_STATE              WiFi상태_변경                                                  
CLEAR_APP_CACHE                어플리케이션_캐시_클리어                                       
CLEAR_APP_USER_DATA            어플리케이션의_유저데이터_클리어                               
CONTROL_LOCATION_UPDATES       위치정보_갱신                                                  
DELETE_CACHE_FILES             캐시파일_제거                                                  
DELETE_PACKAGES                패키지_제거                                                    
DEVICE_POWER                   전원상태에_대한_로우레벨_접근                                  
DIAGNOSTIC                     진단리소스_읽고쓰기                                            
DISABLE_KEYGUARD               키_가드_끄기_DUMP_덤?                                         
EXPAND_STATUS_BAR              상태표시줄_확장                                                
FACTORY_TEST                   팩토리_테스트                                                  
FLASHLIGHT                     플래시라이트                                                   
FORCE_BACK                     포스백                                                         
GET_ACCOUNTS                   어카운트_획득                                                  
GET_PACKAGE_SIZE               패키지_획득                                                    
GET_TASKS                      태스크_획득                                                    
HARDWARE_TEST                  하드웨어테스트                                                 
INJECT_EVENTS                  유저이벤트_키/트랙볼                                           
INSTALL_PACKAGES               패키지_인스톨                                                  
INTERNAL_SYSTEM_WINDOW         내부_시스템윈도_활용                                           
INTERNET                       인터넷                                                         
MANAGE_APP_TOKENS              어플리케이션_토큰관리                                          
MASTER_CLEAR                   마스터_클리어                                                  
MODIFY_AUDIO_SETTINGS          오디오설정_편집                                                
MODIFY_PHONE_STATE             전화상태_편집                                                  
MOUNT_UNMOUNT_FILESYSTEMS      파일시스템_편집                                                
PERSISTENT_ACTIVITY            액티비티_지속                                                  
PROCESS_OUTGOING_CALLS         전화_발신처리_접근                                             
READ_CALENDAR                  캘린더_읽어오기                                                
READ_CONTACTS                  주소록_읽어오기                                                
READ_FRAME_BUFFER              프레임버퍼_읽어오기                                            
READ_INPUT_STATE               입력상태_읽어오기                                              
READ_LOGS                      로그_읽어오기                                                  
READ_OWNER_DATA                owner_data읽어오기                                             
READ_PHONE_STATE               통화상태_읽어오기_READ_SMS_SMS읽어오기                         
READ_SYNC_SETTINGS             동기설정_읽어오기                                              
READ_SYNC_STATS                동기상태_읽어오기                                              
REBOOT                         reboot                                                         
RECEIVE_BOOT_COMPLETED         boot완료                                                       
RECEIVE_MMS                    MMS수신                                                        
RECEIVE_SMS                    SMS수신                                                        
RECEIVE_WAP_PUSH               WAP수신                                                        
RECORD_AUDIO                   오디오_수신                                                    
REORDER_TASKS                  태스크_Z오더                                                   
RESTART_PACKAGES               패키지_리스타트                                                
SEND_SMS                       SMS송신                                                        
SET_ACTIVITY_WATCHER           액티비티_왓쳐지정                                              
SET_ALWAYS_FINISH              액티비티_전체_종료                                             
SET_ANIMATION_SCALE            스케일_애니메이션_지정                                         
SET_DEBUG_APP                  디버그어플리케이션_지정                                        
SET_ORIENTATION                스크린_로테이션지정                                            
SET_PREFERRED_APPLICATIONS     자주_사용하는_어플리케이션_지정                                
SET_PROCESS_FOREGROUND         포어그라운드_처리지정                                          
SET_PROCESS_LIMIT              제한처리_지정                                                  
SET_TIME_ZONE                  타임존_지정                                                    
SET_WALLPAPER                  배경화면_지정                                                  
SET_WALLPAPER_HINTS            배경화면_힌트_지정                                             
SIGNAL_PERSISTENT_PROCESSES    지속처리_시그널_지정                                           
STATUS_BAR                     상태표시줄_지정                                                
SUBSCRIBED_FEEDS_READ          서브스트립드_피즈_읽어오기                                     
SUBSCRIBED_FEEDS_WRITE         서브스트립드_피즈_쓰기                                         
SYSTEM_ALERT_WINDOW            알림_윈도우                                                    
VIBRATE                        진동                                                           
WAKE_LOCK                      알람                                                           
WRITE_APN_SETTINGS             APN설정_쓰기                                                   
WRITE_CALENDAR                 캘린더_쓰기                                                    
WRITE_CONTACTS                 주소록_쓰기                                                    
WRITE_GSERVICES                G서비스_쓰기                                                   
WRITE_OWNER_DATA               owner_data쓰기                                                 
WRITE_SETTINGS                 설정_쓰기                                                      
WRITE_SMS                      SMS쓰기                                                        
WRITE_SYNC_SETTINGS            동기설정_쓰기      


<uses-permission android:name="android.permission.xxxxxx"/>

(출저: http://polomin.tistory.com)

[펌] http://yms2047.tistory.com/277

C와 JAVA 구조체 비교


 C언어 JAVA 
 struct Doggy {

  int eye;
  int leg;
  char[12] name;
}

void run(){
  //뽀삐 달리다.
}

int main()
{
  struct Doggy bbobbi;
  struct kitty marry;

  bbobbi.eye = 2;
  bbobbi.eye = strcpy(name, "뽀삐");
  run();
}
 
class Doggy {
  
  //멤버변수
  int eye;
  int leg;
  String name;
  
  //생성자
  Doggy(){  
  }

  //멤버메소드
  void run(){
    //뽀삐 달리다.
  }
}

public class DoggyTest{

  public static void main(String args[]) {

    Doggy bbobbi = new Doggy();

    bbobbi.eye = 2;
    bbobbi.name = "뽀삐";
    bbobbi.run();
}

+ Recent posts