반응형
SMALL

  

 조용한 공간에서 키보드 치는 소리만 '탁,탁,탁' 울려 퍼진다. 키보드 치는 소리만 들으면 실력꾼들 같다. 


  프로그램 개발자들은 말수가 적다. 오로지 컴퓨터와 대화를 하며 문제를 해결한다. 모니터를 주시하면서 코딩을 해석하고 분석하면서 문제를 해결해 간다. 타인이 만든 코딩도 비교하고 나만의 스타일로 코딩을 재해석 해야한다.

Program developers are reticent. Talk to the computer and solve the problem.


    컴퓨터 앞에서 열심히 모니터를 주시하면서 키보드 치다가 인상을 찡그리며서 ' 으~윽', '앗~~' 하는 버릇이 생겼다.  해결이 잘 안되는 에러가 발생!될때 나는 소리다.  

그래서 코딩을 하고 있으면 여기, 저기서 탄성소리가 난다. '앗~' ,'윽~','으~윽 짜증나'  그 소리에  웃음이 절로 난다. 그 탄성소리가 무엇을 의미하는 지 잘 알고 있기때문이다. 



  코딩을 하다가 에러가 나면 에러를 잡기 위해서 몇시간을 소비하는 건 당연한거고 여기저기 클릭해가며 코딩을 써다 지웠다 반복한다. 분주해지기 시작된다. 사수가 없으면 몇날 몇칠을 그 에러하나 잡으라고 컴퓨터와 씨름을 해야한다.

 If a coding error occurs, it takes several hours to get an error, and then click anywhere to edit it and delete it. It begins to be busy. If you don't have Master, you should wrestle with your computer for several days.


 에러가 난곳을 클릭하며, 영어로 에러에 대한 표시를 해준다. 영어까지 해석하려니 머리가 아프다. 그냥 감으로 에러를 해석한다.  해결될때까지 머리를 긁으며, 감싸으며, ' 아~~앗', '으~~~윽' 탄성 소리를 내면서 문제에 접근해 간다. 하루 일과가 끝나면 머리모양이 헝클어져있다. 고뇌의 징표이다.




 어느날은 모니터를 뚜려지게 처다보다가 코딩에 대한 감이 오면 눈빛에서 레이저가 발사가 된다. 그만큼 집중력 잘 되고있으며 잘 풀리고 있다는 뜻이다. 그때는 정말 재미있다.  때로는 내가 만든 코딩을 이해 못할때가 있다. 언제 이렇게 만들었지. 여러번 보고 또 봐야 코딩을 이해가 된다. 이쪽분야에 5년을 있어야 개발자 소리를 듣는다고 한다. 


 프로젝트가 완성 되며, 뿌듯하고 기쁘다. 프로젝트를 계속 만들수록 진보해 간다. 어떤분야에서든 전진하고 있다고 느껴지면 자부심을 생기기 마련일것이다. 오늘 보다 내일이 전지한 내 모습을 볼때면 희망을 보일것이다.

   

이 세상에 주인공은 나야 나! 이노래 참 좋다.

The main character in this world is me! This song sounds great.

반응형
LIST
반응형
SMALL

  이번에 만들 프로젝트는 컴스텀 리스트 뷰입니다(This Project is a Customview)

ListView를 사용하려면 adapter가 필요합니다(Customview need to adapter).adapterSimpleAdapter, CustomAdapter, ArrayAdapter등이 있습니다. 이번에 만들 프로젝트는  ArrayAdapter로 Listview 만들어 보겠습니다..

아래 그림처럼 Listview 는 화면에 뿌려주는 기능을 가지고 있습니다. 그 기능을

어떻게 사용하는지 코딩을 작성하겠습니다. Let's go! 





1>CustomListview 프로젝트를 생성합니다.

2>res ->layout->activity_main 생성되었을 겁니다.

   Design 클릭후 Listview 드레그하여 RelativeLayout  붙여줍니다.

   Text클릭하여 내부 코딩을 작성합니다.

   <Listview 

      android:id="@+id/list"

      android:layuout_width="match_parent"

      android:lauout_height="match_parent"/>





3> Arrayapater 들어갈 layout 작성해야 합니다.

   res-> layout->listitem 생성합니다.



4> listitem.xml 에서 text 선택후 코드를 작성하기전에 그림파일을 10개준비하여

   res->drawable  붙여넣으세요. 그리고 layout ->listitem에 text가셔서 코드를

   작성합니다.



지금까지 layout 디자인 코딩이었습니다. 이제 Listview 실행할수 있게 메인코딩을를 작성하도록 하겠습니다.


다음은 Arrayapater 코딩을 어떻게 작성해야 하는지 코딩을 만들어 봅시다.

리스트뷰를  arrayapater로 연결하여 화면에 뿌려주는 코딩을 하였습니다

반응형
LIST
반응형
SMALL

▩ 안드로이드 커스텀 대화상자


안드로이드에서 제공하는 커스텀 대화상자는 사용자 인터페이스에 맞게 디자인 할수 있는 대화상자입니다. 커스텀 대화상자를 만드는 과정은 버튼을 만들고 버튼을 눌렸을때 작은 창이 뜨도록하겠습니다.


1> CustomDialog01 프로젝트를 생성합니다.

2> res/layout/activity_main.xml 파일의 코드는 아래 그림과 같습니다.

   커스텀 대화사장을 만들기 위해서는 우선 Button를 만듭니다. 여기서 중요한 포인트는

   android:onClick="onClick" 이 코드는 , 버튼을 누르면 호출하는 코드입니다.

3> 버튼을 작성하였으며, 버튼을 누르면 나타는 layout를 만들어야 합니다. 아래 그림을 보시면

   activity_main.xml아래 custom.xml 파일을 만듭니다. 



EditText를 2개 만듭니다.그리고 LinearLayout 만든다음 LinearLayout에 Button 2개를 만듭니다.

다. 이 layout은 activity_main.xmal에서 button이 클릭 되며 보여주기 위함입니다.


4>MainActivity.java 코드를 작성해 봅시다.



중요한 부분만 코드를 작성하여 설명하겠습니다.



① 코드입니다.

public void onClick( view view)  {             ->button에 onClick 기능을 부여했습니다.

    final Dialog loginDia = new Dailog(this);   -> onClick안에 커스텀 대화상자를 생성합니다.

    loginDia.setContentView(R.layout.custom); ->커스텀 대화상자는 이곳에서 호출됩니다.

    loginDia.setTitle("로그인화면");


②코드입니다.

    Button login = (Button) loginDia.findViewById(R.id.login);                                   

    Button cancel =(Button)lofinDia.findViewById(R.id.cancel);

                    ->버튼 두개를 loginDia에 붙이는 코드작업입니다.


    final EditText name =(EditText)loginDia.findviewById(R.id.name);

    final EditText pass = (EditText)loginDia.findviewById(R.id.pass);

                    ->name,pass EditText를 login.setOnCli loginDia에 붙이는 코드작업입니다.

③코드입니다.

    login.setOnClickListener(new View.OnClickListener(){

              ->login을 클릭하며 아래 코드 조건에 맞는면 "로그인성공"이라고 토스트 뿌립니다

       public void onClick(View view){

         if(name.getText().toString().trim().length() >0 &&  

               ->이름을 입력할때는 , 글자 및문자가 0보다 커야 합니다.                                                       pass.getText().toString().trim().length() >0

 { Toast.makeText(getApplicationContext(),

                             "로그인 성공", Toast.LENGTH_LONG).show();

                           loginDia.dismiss();

            }

④ 코드입니다.

    else{

      Toast.makeText(getApplicationContext(),"다시 입력하시오", Toast.LENGTH_LONG).show();

}   -> ③코드에 맞지않으면 "다시 입력하시오"라는 토스트를 뿌려줍니다.


⑤ 코드입니다.

  cancel.setOnClickListenr(new View.OnClickListener(){

    public void onClick(View v){

      loginDialog.dismiss();

   }

인천직업능력교육원: 배움이

반응형
LIST
반응형
SMALL

▩ 안드로이드 액션바 코딩


액션바는 안드로이드의 맨 상단 화면에 사용자가 자주 사용하는 아이콘들이다. 이 아이콘을 액션버튼이라고 칭한다. 액션바에는 ① 앱 아이콘, 애플리케이션 식별합니다. ② 뷰 컨트롤, 다양한 뷰 사용하여 데이터로 표시합니다. ③액션버튼,애플리케이션의 가장 중용한 동작을 부여줍니다.


1> ActionBar01 프로젝트 파일을 만듭니다.

2> res/drawable 폴더에 아이콘 이미지를 3개을 붙여넣기 합니다.

3> res/menu/action 코드를 작성해 봅시다.

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

    xmlns:app="http://schemas.android.com/apk/res-auto">코딩 설정하신 다음

   adroid:showAsAction="always" 되어있으면 app:showAsAction="always"변경하세요


② 세번째 item에서 app:showAsAction="never" 코딩이 되었있을겁니다. never 화면에

보여주는게 아니라 액션 오버플로우 기능와 같은 뜻으로 숨겨놓다 입니다.app:showAsAction="always" 코딩을 바꾸면 상단화면에 보이는 바와 같이 Setting

글자가 보여짐니다. 


4>MainActivity.java 코딩을 작성해 봅시다.


public boolean onCreateOptionsMenu(Menu u){

   getMenuInflater().inflate(R.menu.action,u);

   return super.onCreateOptionsMenu(u);

}

public boolean optionsItemSelected(MenuItem item){

   switch(item.getItemId()){

       case.R.id.refresh:

           Toast.makeText(this,"리프러쉬",Toast.LENGTH_SHORT).shw();

           return true;

       case R.id.search:

           Toast.makeText(this,"찾기",Toast.LENGTH_SHORT).show();

           return true;

       case R.id.setting:

           Toast.makeText(this,"준비",Toast.LENGTH_SHORT).show();

           return true;

       default;

          return super.onOptionsItemSelected(item);

 }

}

5> ActionBar01 실행해 봅시다.


액션바에서 manifests에서appCompat테마를 사용을 하며 실행결과를 보다시피 상단의 파란색

액션바에서 밝은 톤의 액션바를 보실수 있습니다. 또한 애플리케이션 안드로이디 2.1버전이라고

할지라도 manifests에서<uses-sdk android: minSdkVersion ="7" android:targetSdkVersion=

"18/>설정하시면 액션바를 사용합니다.


반응형
LIST
반응형
SMALL

▩안드로이드 팝업(popupMenu)코딩 ▩


안드로이드에서  팝업메뉴의기능은 버튼을 클릭했을 팝업메뉴가 나타나는 코딩을 말합니다. 직접 코딩을 작성하시고 실행 화면을 보시면 이해가 좀더 빠를실겁니다.

안드로이드에서 팝업을 코딩할때, popupMenu 프로젝트 파일 생성하고 Minimum Required SDK를 API 11로 한다고 책에 적혔있었지만 그 내용을 초보자가 빨리 이해하기엔 쉽지 않았습니다.


1) PopupMenu01 프로젝트 파일을 생성합니다.

2) Minimun Required SDK API 11로 설정 한다(책에 적혀있있습니다).

3> res/layout/main.xml 코드를 작성해 봅시다.


  <Button android:layout_width="wrap_context"

         android:layout_height="wrap_context"

         android:onClick="onClick"        →  버튼에 onClick 기능을 부여합니다.

         android:text="button"/>


4> res/menu/menu 파일을 생성하고 코드를 작성해 봅시다.

    <item

       android:id="@+id/search"

       android:title="search"/>

    <item

       android:id="@+id/add">

       android:title="add"/>

    <item

       android:id="@+id/edit"

       android:title="add">

       <menu>

         <item

             android:id="@+id/share"

             android:title="share"/>

         </menu>

       </item>

    </menu>


5>MainActivity.java 코드작업해 봅니다.


 public void onClick(View v){

     PopupMenu pop = new PopupMenu(this,v);

     pop.getMenuInflater().inflate(R.menu.menu,v.getMenu());

     pop.setOnMenuItemClickListener(

     new PopupMenu.OnMenuItemclickListener(){

          public boolean onMenuItemClick(MenuItem item){

            Toast.makeText(getApplicationContext(),"클릭된 팝업메뉴:"+item.getTitle(),

            Toast.LENGTH_SHORT).show();

      return true;

     }

   });

 popup.show();

 }

}

① 코딩을 보시면 OnClick 되어있습니다. 버튼을 눌렸을경우 처리하는 이벤트동작입니다.

② 코딩을 보시면 PopupMenu pop = new PopupMenu(this,v); 여기에서는 this라는 뜻은

   현재 액티비티에 v 를 보여준다는 코딩입니다.

③ 코딩을 보시면  pop.getMenuInflater().inflate(R.menu.menu, pop.getMenu()); 여기에서

   R.menu.menu에다 pop.getMenu() 부착한다는 코딩입니다.


6>popupMenu01 실행결과입니다.



           실행결과를 보시면 Button에 onClick 기능을 코딩하였고, onClick에는 PopupMenu을 생성하여 가운데 화면에 보시는 바와 같이 파업항목을 처리하게 했습니다. 이번 포스팅은

팝업메뉴 코딩을 작성해 봤습니다. 처음에 코딩때 버젼이 찾지 못해서 파업메뉴코딩하는데 헤맸지만 책읽고 인터넷 찾아서 버젼을 쉽게 찾을수 있었습니다.

반응형
LIST
반응형
SMALL

▩ 안드로이드 컨텍스트 액션 모드


컨텍스트 액션바는 텍스트 뷰 액티비티를 오래 누르게 되며 액정화면 상단에 공유 버튼인 액션바가 표시됩니다.


컨텍스트 액션모는 예제를 통해서 알아보도록 하겠습니다.

1> ContextMenu 프로젝트 파일을 생성합니다.

2> res/layout/main 코드작성을 합니다.

 

3> res/menu/menu 코드를 작성을 합니다.

   <item android:id+"@+id/share"

          android:icon="@drawable/disk"

          android:title="new game"/>


4>MainActivity.java  코드를 작성합니다.


public class MainActivity extends ActionBarActivity implements View.OnLongClickListener,

ActionMode.Callback{

ActionMode mActionMode;


protected void onCreate(Bundle savedInstanceState){

     super.onCreate(savedInstanceState);

     setContenView(R.layout.activity_main);

     TextView text =(TextView)findViewById(R.id.textview);

     text.setOnLongClickListener(this);

 }

public boolean onCreateActionMode(ActionMode mode, Menu menu){

     Manulnf later inflater = mode.getMenuInflater();

     inflater.inflate(R.menu.menu,menu);

     return true;

}

public boolean onPrepareActionMode(ActionMode mode, Menu menu){

    return false;

}

public boolean onActionItemClicked(ActionMode mode, MenuItem item){

      switch(item.getltemId()){

             case R.id.share:

              mode.finish();

              return true;

           default:

              return false;

     }

  }

public void onDestroyActionMode(ActionMode mode){

  mActionMode = null;

}

public boolean onLongClick(View view){

   if(mActionMode !=null){

         return false;

    }

    mActionMode = this.startActionMode(this);

    view.setSelected(true);

    return true;

   }

}

5>ContextMenu 프로젝트를 실행합니다.




컨텍스트 액션바를 통해서 알수있는건 리스트뷰를 롱클릭 하였을경우 위의 상단에

액션바가 생성된다. 컨텍스트 액션바는 액션바와 관련이 있지않기 때문에 이들은

각각 독립적으로 동작이 된다. 

마지막으로 컨텍스트 액션모드를 제공하는 방법에는 기본적으로 각가의 뷰에 컨텍스트 액션 모드를 추가하는 방법과 기리드 뷰나 리스트 뷰에 항목들에 한꺼번에 추가하는 방법이 있습니다.



반응형
LIST
반응형
SMALL

▩ 안드로이드 인터페이스 컨텍스트 메뉴 3편




                                  

컨텍스트메뉴는 어떤 뷰에서도 가장 많이 사용되는 뷰로 그리드 뷰와 리스뷰입니다. 특정한 항목에 반응을 주는 동작을 하기에 어떤 뷰에도 컨텍스트 메뉴를 사용한답니다. 컨텍스트메뉴는 2가지 모양으로 제공이 됩니다.


* 플로팅 컨텍스트 메뉴: 액티비티 항목을 오래 누르고 있으면 메뉴가 리스트처러 표시됩니다.

* 컨텍스트 액션 모드: 선택된 항목를 누르면 관련된 메뉴가 액션바로 나타납니다. 


이번 포스트에서는 플로팅 컨텍스트 메뉴부터 코딩을 작성해보겠습니다. 

1) ContextMenu라는 프로젝트 파일을 생성합니다.

2) res/layout/activity_main.xml 코드를 작성합니다.

   * 여기서 중요한 부분은 ①에 표시된 android:id="@+id/LinearLayout01" 작성해야만

     롱클릭시 ContextMenu가 나타납니다.


3)MainActivity 코드를 작성해 봅시다.

 ① 텍스트뷰에서 컨텍스트 메뉴를 뿌려주려면 registerForContextMenu() 호출하고 여기에

    text를 인수로 전달합니다. 즉,registerForContextMenu(test);

    코딩작업입니다.: 

    protected void onCreate(Bundle savedInstanceState){

     Textview text;

    protected void onCreate(Bundle savedInstancState){

        super.onCreate(savedInstanceState);

        text =(TextView) findViewById(R.id.TextView01);

        registerForContextMenu(text);

    }

  ② 컨텍스트메뉴 코딩을 작성합니다.

     public void onCreateContextMenu(ContextMenu menu, View v,

     ContextMenu.ContexMenuInfo menuInfo){

          super.onCreateContextMenu(Menu, v,menuInfo);

          menu.setHeaderTitle("컨텍스트메뉴");

          menu.add(0,1,0,"배경색: RED:);

          menu.add(0,2,0,"배경색:GREEN");

          menu.add(0,3,0,"배경색:BLUE");

         }

  ③ 컨텍스트메뉴가 클릭이 되며 텍스트 뷰의 배경이 선택할수 있습니다.

       public boolean onContextItemSelected(MenuItem item){

         switch(item.getItemId()){

           case 1:

              text.setBackgroundColor(Color.RED);

              return true;

           case 2:

              text.setBackgroundColor(Color.GREEN);

              return true;

           case 3:

              text.setBackgroundColor(Color.BLUE);

              return true;

           default:

             return super.onContextItemSelected(item);

             }

        }

4) 컨텍스메뉴 실행결과입니다.


이번 포스팅에서는 텍스트뷰에 컨텍스트메뉴를 설정하는 코딩을 해봤습니다. 여기서 중요한 코딩은 registerForContextMenu()호출하고 액티비티에 onCreateContextMenu()생성하여 리스트뷰에 전달합니다.


반응형
LIST
반응형
SMALL

▩ 안드로이드 인터페이스

옵션메뉴(OptionMenu) 만들어봅니다. 2편






옵션메뉴을 만드는 순서는 다음과 같습니다. 


1) OptionMenu  프로젝트를 파일을 생성합니다. 

2) res/drawable에 그림파일을 3개 저장해 둡니다.

3) res/menu 아래 menu.xml파일을 만듭니다. 

   * 만드는 방식은 옵션메뉴 1편에 자세이 나옵니다. 


  <item

     android:id="@+id/apple"

     android:icon="@drawable/iamge"

     android:title="사과"/>

  <item

     android:id="@+id/grape"

     android:icon="@drawable/image2"

     android:title="포도"/>

 <item

     android:id ="@+id/banana"

     android:icon="@drawable/image3"

     android:title="바나나"/>


인천직업능력교육원:배움이


4) Optionmenu.java 파일을 코드를 다음과 같이 작성합니다.


   public boolean onCreateOptionsMenu(Menu menu)[

       MenuInflater inflater = getMenuInfalter();

       inflater.infalte(R.menu.menu,menu);

       return true;

    }


  public boolean onOptionsItemSelected(MenuItem item){

         switch(item.getItemId()){

         case R.id.apple:

               Toast.makeText(this,"사과",Toast.LENGTH_SHORT).show();

               return true;

         case R.id.grape:

               Toast.makeText(this,"포도",Toast.LENGTH_SHORT).show();

               return true;

         case R.id.banana:

               Toast.makeText(this,"바나나",Toast.LENGTH_SHORT).show();

               return true;

         default;

              return super.onPtionsItemSelected(item);

        }

     }

인천직업능력교육원:배움짱


① 코드 : 액티비티의 메소드 OnCreateOptionsMenu()를 재정의 합니다. 이 메소드는 매개변수로  menu 객체로 전달되는데, 이것은 비어있는 메뉴입니다. 여기에다  res/menu/menu.xml로

작성된 메뉴는 옵션 메뉴ㅏ 컨텍스트 메뉴에서 불러들여서 사용될 수 있습니다.프로그밍 객체로 변환한다는 뜻입니다.

② 코드 : R.id.apple: , R.id.grape:,  R.id.banana:  성공적으로 메뉴 항목을 처리했으면 true값을 반환하여 실행되었다는 뜻입니다.

만약 메뉴 항목을 실행하지 못했다면 부모클래스인  onOptionsItemSelected()호출하여야 하는데 아래 코드로 작성하시며 됩니다.

 default:

       return super.onOptionsItemSelected(item); 이벤트 상위 클래스로 전달됩니다.


5) 실행결과입니다.


인천직업능력교육원:배움이


옵션바를 클릭하며 사과,포도,바나나 메뉴화면이 나타납니다. 각 항목 사과, 포도, 바나나 클릭하면 아래 사과, 포도,바나나 항목 글이 뿌려짐니다. 

반응형
LIST
반응형
SMALL

안드로이드 인터페이스  옵션메뉴1편 



                                                  

안드로이드의 사용자 인터페이스(UI)에는 내비게이션 바, 체스처 , 터치 피드백, 앱의 외관 커스텀화, 다중 패널 레이아웃, 메뉴와 액션바 등이 있습니다. 이번 포스트에서는 메뉴와 액션바에 대해서 알아보겠습니다.


<메 뉴: 개념> 많은 애플리케이션중에서 메뉴바는 가장 친숙하게 사용도어지는 인터페이스 요소 중에하나 입니다. 메뉴바는 애플리케이션에서 제공하는 모든 기능을 계층적으로 사용하룻 있기때문에 특히 테스크톱에 많이 사용됩니다.


<메 뉴: 종류> 

팝업메뉴: 우리가 흔히 사용하는 단어 팝업메뉴는 수직방향으로 리스트를 뿌려줍니다. 

컨텍스트 메뉴: 액티비티화면을 길게 누르고 있으면 나타나는 메뉴바라고 보시면 됩니다.


<메뉴를 생성하는 방법>에 대해서 알아봅시다. 

● 코드로 메뉴 생성, ● XML로 메뉴 생성하기 두가지 방법이 있지만 가장 자주 사용되는 XML로 코드를 작성해보겠습니다.


Xml로 정의하게 되며 많은 장점을 가진다.

* 메뉴 구조를 쉽게 시각화할 수 있습니다.

* 코드와 메뉴가 분리되어서 차후에 쉽게 변경할수 있습니다.

* 플맷폼 버전이나 화면 크기에 따라서 서로 다른 메뉴 구성을 가질 수 있습니다.


그럼  xml메뉴 생성하는 방법을 알아봅시다.

res → 클릭한 상태에서 마우스 오른쪽 버튼을 누릅니다.→File name을 menu 지정합니다.

(Resource type에서 Menu으로 설정합니다. Available qualifiers에서 Country Code 설정합니다)




코드를 작성합니다.

<item 

   android: id ="@+id/new_game"

   android:icon="@drawable/image2"

   android:showAscAction="ifRoom"

   android:title=" 새로운게임"/>

<item

  android:id ="@+id/help"

  android:icon="@drawable/image3"

  android:title=" 도움말"/>



메인액티비티에서 코드를 작성합니다.


public class MainActivity extends AppCompatActivity{

  protected void onCreate(Bundle savedInstanceState){

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main):

}

public boolean onCreateOptionsMenu(Menu menu){

      Menulnflater inflater = getMenulnflater();

      inflater.inflate(R.menu.menu.menu);  ----> 메뉴리소스 확장

     return true;

}


메뉴바 실행을 하겠습니다.


안드로이드 실행빈 화면이 보입니다

      










오늘쪽 상단을 클릭하였을 경우, 메뉴바가 보입니다.















이번 포스트에서  XML로 메뉴바 기본 코드작성이었습니다. 다음 포스티에서는 다양한 메뉴바코드를 이용해 보도록 하겠습니다.

반응형
LIST
반응형
SMALL

▩ 멀티터치 중 핀치즘(pinch zoom)


멀티터치 중에서도 핀치즘은 가장 대표적인 터치이벤트라고 할수 있습니다. 두 개의 손가락으로 확대하거나 축소하는 코드입니다. 


멀티터치 핀치즘에서 대해서 간단한 예제를 통해서 알아보도록 하겠습니다.


(1) ImageScale 프로젝트 파일을 생성합니다.         (핀치즘 pinch zoom)


(2) 2-1) ImageScale.java는 자동생성됩니다.

    2-2) MyImagView. java 파일을 만듭니다.

    

MyImageView.java 코드를 작성해 보도록 하겠습니다.(핀치즘pinch zoom)


public class MyImageView extends View{

    private Drawable image;

    private ScaleGestureDetector gestureDetector;

    private float scale = 1.0f;


    public MyImageView(Context context) {

       super(context);

       image = context.getResources().getDrawable(R.drawble.smile);

       setFocusable(true);

       image.setBounds(0,0,image.getIntrinsicWidth(),

               image.getIntrinsicHeight());

      gestureDetector = new ScaleGestureDetector(context, new ScaleListener()); 

       ▶ 제츠서 인식기 객체를 생성합니다.


 }


protected void onDraw(Canvas canvas){

      super.onDraw(canvas);

      canvas.save();

      canvas.scale(scale, scale); 

      ▶ 캔버스에 신축 연산을 적용한다.


      image.draw(canvas);

      canvas.restore();


public boolean onTouchEvent(MotionEvent event){

      gestureDetector.onTouchEvent(evnet); 

      ▶ 제스처 인식기 터치 이벤트 처리 메소드를 호출합니다.

      invalidate();

      return true;

}


private class ScaleListener extends

      ScaleGestureDetector.SimpleOnScaleGestureListener{

   

     public boolean onScale(ScaleGestureDetector detector){

         scale *= detector.getScaleFactor();


         if(scale < 0.1f)

           scale = 01.f;

         if(scale > 10.0f)

           scale = 10.0f;


       





신축 연사이 감지가 되면 호출이 됩니다.





       invalidate();

       return true;


  }

  }


3) 실행결과입니다. (핀치즘 pinch zoom)





이 애플리케이션의 결과를 확실히 알고 싶다면 스마트폰에 연결하여 실행하여서

확인해야한다. 두개의 손각으로 화살표 방향으로 동작하면 작은 화면이 큰 이미지로

변경되는 걸 알수 있습니다.


이번 포스트까지 해서 안드로이드에 나와있는 기본예제였습니다. 

다음 포스트에서는 연습예제를 통해서 터치이벤트 코드를 작성해보겠습니다.

반응형
LIST

+ Recent posts