반응형
SMALL

▩ 곡선그리기(SingleTouch)커스텀컴포터넌트

 

앱개발자로 부터 터치를 입력받아서 곡선을 화면에 그리는 애프리케이션이다. 이것은 터치를

응용하는 것으로써 예제를 많이 다루어 보자. 여러방법이 있으나 쉬운 방법 Path객체를 이용하여 점의 좌표를 누적시키는 코드를 작성해 봅시다.

 

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

 

2) SingleTouchActivity.java 파일을 엽니다. 코드는 다음과 같은 방법으로 작성합니다.

 

  public class SingleTouchActivity extends ActionBarActivity{

     protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(new SingleTouchView(this,null));

   }

}

 

3) SingleTouchActivity 아래에 새로운 폴더를 하나 추가합니다.

    SingleTouchView.java 파일을 만듭니다.

 

public class SingleTouchView extends View{

      private Paint paint  =  new Paint();

      private Path path = new Path();

 

     public SingleTouchView(Context context,AttributeSet attrs){

           super(context, attrs);

          paint.setAntiAlias(true);

          paint.setStrokeWidth(10f);

          paint.setColor(color.BLUE);

          paint.setStyle(Paint.Style.STROKE);

          paint.setStrokeJoin(Paint.Join.ROUND);

    }

 

protected void onDraw(Canvas canvas){

         canvas.drawPath(path,paint);

}

public boolean onTouchEvent(MotionEvent event){

          float eventX = event.getX();

          float eventY = event.getY();

 

   switch(event.getAction()){

      case MotionEvent.ACTION_DOWN:

             path.moveTo(eventX, evntY);

             return true;

     case MotionEvent.ACTION_MOVE:

             path.lineTo(eventX,eventY);

             break;

    case MotionEvent.ACTION_UP:

            breakl

    default;

            return false;

  }

     invalidate();

     return true;

 }

}   

 

4> 곡선그리기(SinglTouch) 실행결과입니다

 

 

 

곡선그리기(SingleTouch) 노트폰에서 활용도 높습니다.

 

반응형
LIST
반응형
SMALL

터치이벤트(TouchEvent)커스텀컴포넌트

 

손으로 스마트폰을 직접 터치하여 이벤트를 처리할수 있다. 터치이벤트는 흔하게 사용하기때문에 특히 게임에서 중요한 부분을 차지한다.

 

터치이벤트 커스텀컴포넌트를 사용하기 위해서는 2가지 방식으로 처리해 보자!

 

      ● 뷰의 콜백 메소드 재정의 : onTouchEvent(MotionEvent e)를 재정의합니다.

      ● 리스너 등록: onTouch(View v, MotionEvent e)를 재정의합니다.

 

(1) 터치이벤트(TouchEvent) 프로젝트 파일을 생성합니다.

(2) TouchEventActivity.java 파일을 엽니다.

 

     터치이벤트 코드 작성을 합니다.

   public class TouchEventActivity extends ActionBarActivity {

      protected class MyView extends View {

       int x =100, y =100;

       String str;

     

      public MyView(Context context){

       super(context);

       setBackgroundColor(Color.YELLOW);

      }

    protected onDraw(Canvas canvas){

      Paint paint = new Paint();

      paint.setColor(Color.MAGENTA);

      canvas.drawRect( x, y, x+100, y+100, paint);

      paint.setTextSize(50);

      canvas.drawText("액션의 종류:"+str, 0,100, paint);

 

※ 아래화면을 보시면 코드을 다시한번 써어봅니다.

 

 

      public boolean onTouchEvent(MotionEvent event){

         x = (int) event.getX();

         y = (int) event.getY();

 

        if(event.getAction() == MotionEvent.ACTION_DOWN)

          str = " ACTION_DOWN";

        if(event.getAction() == MotionEvent.ACTION_MOVE)

          str="ACTION_MOVE";

        if(event.getAction() == MotionEvent.ACTION_UP)

          str ="ACTION_UP";

          invalidate();               화면을 무효화하여서 화면을 다시 그리게 한다.

         return true;

      }

}

 

    public void onCreate(Bundle savedInstanceState){

         super.onCreate(savedInstanceState);

         MyView w = new Myview(this);

         setcontentview(w);

    }

}

 

 3) 터치이벤트 커스텀컴포넌트 실행결과입니다.

 

 

손으로 터치하였을때 터치이벤트입니다. 안드로이드 앱개발에 특히 게임개발에

자주는 코드라고 생각합니다.

이번 포스트까지 커스텀컴포넌트 예제를 통해서 다양한 코드을 작성해 보았습니다.

다음 포스트도 커스텀컴포넌트를 통한 코드를 연습해 보겠습니다.

반응형
LIST
반응형
SMALL

▩ 커스텀컴포넌트 이벤트 처리, 볼륨을 높여라

 

안드로이드는 다양한 기본 위젯을 제공을 한다. Button, TextView, EditText,ListView,CheckBox,

RadioButton,Gallery,Spinner있다.  이 위젯들 중에서도 개발자가 필요로 의해서 직접 View클래스를 상속받아서 위젯을 개발해야 한다. 이것이 커스텀 컴포넌트다.

만약 기존의 위젯을 약간만 변화를 주고 싶으면 위젯을 상속받아서 메소드를 제정의하면 된다.

 

이번 포스트에서는 볼륨을 동작하는 위젯을 만들어 보자!

 

1) 아래 그림과 같이 이미지를 res/drawable 폴더에 저장합니다. 이름은 "knob.png"입니다.

 

 

2>  VolumeControView01 프로젝트를 생성합니다.

3>1번. MainActivity.java 파일이 자동 생성되었을 겁니다.

           VolumeControlView.java  파일을 만듭니다.

    2번. 1) 그림저장된 상태를 나타냅니다.

   

 

    3번. activity_main.xml 코드을 작성합니다.

         < main.volumecontroview01.VolumeControlView  → 커스텀컴포넌트를 사용할 때는

                   android:id ="@+id/volume"

                   android:layout_width="300px"

                   android:layout_height="300px"

                   android:layout_gravity="center"/>

 

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

    package Kr.co.company.customcomponet;

  

   public class VolumeControlview extends ImaeView implements View.OnTouchListener{

     private double angle = 0.0;

     private knobListener listener;

     float x,y;

     float mx,my;

   

    public interface KnobListener{

           public void onChanged(double angle);

    }

    public void setKnobListener(KnobListener lis){

          listener = list;

    }

    public VolumeControlView(Context context){

         super(context);

         this.setImageResource(R.drawable.knob);

         this.setOnTouchListener(this);

   }

    public VolumeControlview(Context context, AttributeSet attrs){

        super(context, attrs);

        this.setImageResource(r.drawable.knob);

        this.setOnTouchListener(this);

    }

    private double getAngle(float x, float y) {

       mx = x -(getWidth() /2.0f);

       my = (getHeight() / 2.0f) -y;

       double  degree = Math.atan2(mx,my) * 180.0/3.141592;

       return degree;

    }

    public boolean onTouch(View v, MotionEvent event){

       x = event.getX(0);

       y = event.geetY(0);

       angle = getAngle(x,y);

       invalidate();

       listener.onChanged(angle);

       return true;

   }

   protected void onDraw(Canvas c){

      Paint paint = new Paint();

      c.save();

      c.rate(float ) angle.geWidth()/ 2. getHeight()/2;

      super.onDraw(c);

      c.restore();

     }

}

 

5> MainActivitiy.java  코드를 작성합니다.

 

6. 볼륨실행을 아래와 같습니다.

 

   

위의 예저처럼 안드로이드에서 지원되지 않는 위젯을 개발하고자 할때에는 개발자가

직접 View 클래슬 상속받아서 필요한 위젯을 개발할 수 있다.

반응형
LIST
반응형
SMALL

커스텀컴포넌트를 생성

 

컴스텀 컴포넌트를 생성하기 위해서는 다음과 같은 절차를 밟아야 한다.

첫번째, View 클래스를 상속받아서 자식 클래스를 생성한다.

두번째, 부모 클래스의 메소드를 재 정의한다. 주로 앞에 on이 붙어 있는 메소소드를 재정의

            하면 됩니다. OnDraw(), OnMeasure(), OnKeyDown() 메소드를 재정의 하여서 필요한

            기능을 추가한다.

세번째, 커스텀 컴포넌트는 뷰 클래스 객체가 사용될 수 있는 곳이면 어디서든 사용이 가능하

           다.

 

커스텀 컴포넌트 이벤트 처리 방법

사용자가 나름대로 커스텀 컴포넌트를 작서하려고 할 때 , 즉 다시 말해서 Button 클래스를

상속하여 나만의 버튼을 만들고 싶은 경우가 있다. 이때 onKeyDown()와 같은 이벤트 처리기를

재정의하여서 이벤트를 처리하면 좋다.

 

● OnkeyDown(int, KeyEvent) - 사용자가 키보드를 눌렀을때 호출됩니다.

● onKeyUP(int, Keyevent) - 사용자가 키에서 손을 뗐을 때 호출됩니다.

● OnTrackballEvent(MotionEvent) - 사용자가 트랙볼을 움직였을때 호출됩니다.

● OnTouchEvent(MotionEvent) - 사용자가 화면을 터지했을 때 호출됩니다.

● OnFocusChanged(boolean,int,Rect) - 뷰가 포커스를 얻거나 잃었을때 경우에 호출된다.

 

 

   class MyView extends view{

             int x, y;

 

     public MyView(Context context){

       super(context);

      setBackgroundColor(Color.YELLOW);

      }

     public boolean onTouchEvent(MotionEvent event){

        x =(int)event.getX(0);

        y =(int) event.getY(0);

        invalidate();

      return super.onTouchEvent(event);

      }

 

    protected void onDraw(Canvse canvse){

      Paint paint = new Paint();

      paint.setTextSize(60);

     canvas.drawText("("+x+","+y+") 에서 터치 이벤트가 발생하였음", x,y,paint);

   }

}

public class MyViewEventActivity extends ActionBarActivity{

    public void onCreate(Bundle savedInstanceState){

       super.onCreate(savedInstanceState);

 

      MyView w = new MyView(this);

     setContentView(w);

  }

}

 

컴스텀컴포넌트 실행 결과입니다.

빨강색 부분이 터치했을경우 나타내는 위치값입니다.

 

 

오늘 포스트 커스텀 컴포넌트을 예제를 통해서 알아봤습니다.

 

반응형
LIST
반응형
SMALL

이벤트 처리 라디오버튼(RadioButton) 위젯◈

 

  라디오버튼 위젯은은 체크박스와 비슷하지만 하나의 선택만 할수있습니다. 따라서 라디오버튼(radiobutton) 둘개 중에 하나만  클릭하여 선택된다. 따라서  다른 버튼은 자동적으로 해제됩니다.

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

   RadioButton01 입력하고 next 버튼을 누릅니다.

   낮은버전을 선택하고 next 누릅니다.

   RadioButton01  다음으로 빈화면을 선택 후 next클릭합니다.

   RadioButton01 마지막 화면이 보여지면 finish클릭합니다.파일일 생성 되었습니다.

   Radiobutton01 파일생성이 끝났습니다.

 

2>-1  res/layout/ Design 클릭 후 Disgn/text부분에서 Disgn선택하시고  RadioGrop 클릭과 

동시에 드래그로 LinearLayout 아래쪽에 붙여넣고 같은 방법으로

Radiobutton 클릭후 드래그하여 RadioGrop 밑으로 붙여넣어줍니다.

 

 * 그런다음 Design/Test , text선택한 다음 라디오버튼 코드작성은

아래와의 같이 해주면 됩니다.

<RadioGroup

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:orientation="vertical">

    <RadioButton

       android:id ="@+id/red"

       android:layout_with ="wrap_content"

       android:layout_height="wrap_content"

       android:onClick="onRadionButtonClicked"

       android:text="Red"/>

    <RadioButton

      android:id="@+id/Blue"

      android:layout_with="wrap_content"

      android:layout_height="wrap_content"

      android:onClick="onRadionButtonClicked"

     android:tex="Blue"/>

 

 

3>RadioButtonActivity.java 파일을 열어서 아래와 같은 방법으로 코드를 작성합니다.

 

public void onRadioButtonClicked(View view){

   boolean checked =((RadioButton)view).isChecked();

 

  switch(view.getId()){

   case R.id.radio_red:

     if(checked)

      Toast.makeText(getApplicationContext(),

                   ((RadioButton) view).getText(),

                   Toast.LENGTH_SHORT).show();

     break;

 case R.id.radio_blue:

    if(checked)

     Toast.makeText(getApplicationContext(),

                   ((RadioButton)view).getText(),

                  Toast.LENGTH_SHORT).show();

   break;

   }

}

 

 

Radioutton에서 onRadioButtonClicked 클래스는 res/layout/

acvity_main안에 radiobutton 속에 adroid:onClick="onRadioButtonClicked" 불러오기 위해서 입니다.

4> Radiobutton01 실행합니다.

5>Radiobutton01 결과를 보여줍니다.

 

 

만약! RadioGrop 선택없이해도 실행은 됩니다.

그러나! Radiobutton의 고유목적인 둘중에 하나만 선택되는게

아니라 둘다 선택되기 때문에, 체크박스처럼 여러개를 선택할수

있습니다.

 

그서 꼭! RadioGrop를 설정해야합니다.

 

<아래 그림은 미설정시 >

 

<미설정후 결과:>

 

 

지난 번에는 체크박스(checkBox위젯 예제를 작성해 보았으며, 이번에는 라디오버튼(radiobutton)위젯을 예제를 통해서 알아 봤습니다.

 

차이점을 꼭 확인하시고 기능에 맞는 코드로 안드로이도 개발에

도움이 되었으면 합니다.

반응형
LIST
반응형
SMALL

이벤트 처리 (체크박스버튼(checkbox button))사용하기 ▣

 

이벤트 처리에는 체크박스(checkbox) 위젯이 있습니다.

체크박스(checkbox) 위젯은 어느때 사용하면 쓰기 편한지 알아보도록 하겠습니디. 체크박스(checkbox) 위젯은 여러 개를 동시에 선택할때 사용되어지는 위젯입니다.

 

예제를 통해서 알아보겠습니다.

 

1) CheckBox file 프로젝트를 생성합니다.

 

   * checkBox01 파일 만듭니다. 

     체크박스버튼(checkboxbutton) 입력하고 next 누룹니다.

 

 

  * 아래와 같은 화면이 보입니다. next누루고 이동합니다.

  

 

 * 아래와 같은 화면으로 이동됩니다. 빈프로젝트를 선택합니다.

 

 

  * 아래와 같은 화면이 보이고  finish 눌러줍니다.

                                                       

 

2) *es/layout에서 activity_main.xml 에서 Design 선택합니다.

     Checkbox 클릭한 상태에서 드러그하여 붙여넣기 합니다.

     그리고 text로 화면이동합니다. 코드를 작성합니다.

 

 

<CheckBox

     android:id="@+id/meat"

     android:layout_width="wrap_content"

     android:layout_weight="1"

     android:text="고   기"

     android:onClick="onCheckboxClicked"/>

<Checkbox

    android:id="@+id/cheese"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="치즈"

    android:onClick="onCheckboxClicked/>

 

 

  3> CheckBox01Activity 파일을 아래와 같은 방법으로 코드를 작성하면된다.

 

public void onCheckboxClicked(View view){

   boolean checked = ((CheckBox) View).isChecked();

   switch(view.getId()){

      case R.id.checkbox_meat:

        if(checked)

         Toast.makeText(getApplicationContext(),"고기선택",

           Toast.LENGTH_SHORT).show();

        else

         Toast.makeText(getApplicationContext(),"고기선택해제",

          Toast.LENGTH_SHORT).show();

        break;

     case R.id.checkbox_cheese:

        if(checked)

         Toast.makeText(getApplicationContext()," 치즈선택",

            Toast.LENGTH_SHORT).show();

        else

         Toast.makeText(getApplicationContext(),"치즈선택해제",

           Toast.LENGTH_SHORT).show();

      break;

}

 

 

 

4> 체크박스버튼(checkbox button) 실행합니다.

 

 

 

   * 아래와 같이 두개의 체그박스 위젯이 생성되었으며,

고기를 클릭과 동시에(Toast)"고기선택" 보이고 치즈를 클릭하며

(Toast)"치즈선택"이 보여집니다.

 

 

체크박스(checkbox) 위젯기능을 알아보았습니다.

반응형
LIST
반응형
SMALL

▩  리스너 객체를 이벤트처리(event) 액티비티에 인터페이스▩



액티비티 클래스에 인터페이스를 구현한다면 이벤트를 처리할 클래스를 새로 작성할 필요가 없습니다.

 

예제를 통해서 리스너 객체를 이벤트처리 액티비티에 인터페이스 작성하시고 정확한 개념을 이해하시면 됩니다.

 

1> 액티비티에 인터페이스 구연하기 위해서는

     ButtoEvent03 파일을 생성합니다.

     ButtoEvent03 입력 후 next 클릭합니다.

 

 

우선은 낮은 버전으로 설정했다가, 버전이 낮아서 실행이 안되면 버전을 변경하셔도 됩니다.

Next선택하시면 다음화면이 보이실겁니다. 빈 프로젝트를 선택합니다.  

그리고 마지막 화면이 나타나면 finish선택하시며 프로젝트 화일이 생성됩니다. 

2> 액티비티 인터페이스 activity_main.xml 작성합니다.

다 아시겠지만 Design 선택 후 버튼을 선택한 상태에서 드레그하여 붙여넣기 하시고 text화면을 클릭하여 코드를 수정하시며 됩니다.

액티비티 인터페이스 버튼을 작성 코드작업입니다.

<Button

      android: id="@+id/button"

      android:layout_width="wrap_context"

      android:layout_weight="1"

      android:text="Button"/>

 

 

 

 

3> ButtonEvent03Acitivity.java 코드작성 합니다.

      액티비트 인터페이스로 작성합니다.

 

public class Mainactivity extends ActionBarActivity implements

OnClickListenenr{

      public void onCreate(Bundle savedInstanceState){

         super.onCreate(savedInstancesState);

         setContentView(R.layout.main);

        Button button =(button) findViewById(R.id.button);

        button.setOnClickListener(this);

  }

public void onClick(View v){

Toast.makeText(getApplicationContext(),"버튼이 눌러졌습니다", Toast.LENGTH_SHORT).show();

  }

}

 

 

 

4. 리스너 객체를 액티비티에 인터페이스 코딩을 작업을 완료하신 후 실행버튼을 눌르시며 

   액티비 디 인터페이시가 실행됩니다.

5. 액티비디 인터페이스의 결과는 아래의 화면처럼 나옵니다.

   클릭전 과 클릭 후를 비교해 보세요.

 

 

 

오늘까지 총 3회 걸쳐 버튼 이벤트 처리방법을 예제로 통해서 알아보았습니다.

버튼에 어떻 코드를 작성하느냐 따라서 원하는 이벤트를 확인할수 있습니다. 이번 포스팅은 액티비티 인터페이스로 버튼이벤트을

확인해보았습니다.

 

다음 포스팅은 버튼은 아니지만 버튼기능을 하는 체크박스,라디오버튼,토글버튼,레이팅 바 위젯을 알아봅시다.

 

각 기능의 맞는 위젯을 알아봄으로써 안드로이드 웹 개발에 도움이 될겁니다.

 

 

반응형
LIST
반응형
SMALL

  ▩ 리스너 객체를 무명클래스로 이벤트처리입니다. ▩

 

  클래스가 딱 한 번만 사용되는 경우에는 사실은 클래스에 이름을

붙일 필요가 없습니다.  따라서 무명클래스이고 객체도 이름이 없는 임시 객체로 만드는 방법이 많이 사용된다.

 

  * 무명클래스와 내부클래스 특징은 ? 내부클래스는 다양한 버튼에서 이벤트를 처리할수 있다.

 

  (1) ButtonEvent02  프로젝트 file 생성합니다.

 

 

 

ButtonEvent02 입력후 다음 버튼을 클릭합니다.

 

 

빈 프로젝트를 선택하고 클릭합니다.

앞 포스티에서 언급하였지만 프로젝트에 따라서 선택을 하실수 있습니다.

우선 안드로이드 개발을 배우는 과정이라면 빈 프로젝트를 선택하시며 됩니다.

이제 안드로이드 개발 프로젝트 준비가 완료되었습니다.

  

(2) main.xmal 코작성입니다.

 

Dsign화면에서 button 만든다음 text 화면으로 이동해서 Button에

알맞는 코드를 작어하시면 됩니다.

<button

    android:id="@+id/button"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_weight="1"   --> 생략해도 무관합니다.

    android:text ="Button"/>

 

 

 

 

  (3) 메인에서 코드작성입니다.

 

앞 포스트에서 보신거라 비교하시면, 내부 클래스는 클래스을따로 만들었습니다.

이번에는 버튼에 onClickListener 붙였습니다.

 

Button button = (Button)findViewById(R.id.button); -->버튼생성

버튼에 setOnClickListner 붙착했습니다.

  button.setOnClickListener(new View.OnClickListenenr(){

      public void onClick(View v){

       Toast.makeText(getApplication(),"버튼이 눌려졌습니다.",

        Toast.LENGTH_SHORT).show();

   }

});

 

 

 (4) 리스너 객체 이벤트처리 실행결과입니다.

 

 

무명클래스 이벤트처리결과는 내부 클래스 이벤트 처리결과와 같습니다.

 

 무명클래스와 내부 클래스는 기능(이벤트)에 따라서 코드작성을 을 해주시며 됩니다.

 

 즉 무명클래스는 버튼 하나하나에 이벤트를 다르게 줄수 있습니다. 그래서 코드가 길어지고 복잡하게 보여짐니다.

앱개발에서 제일 기본적인 이벤트 중에서도 버튼이벤트를 배워보았습니다. 이전 포스트에서는 내부 클래스에 버튼이벤트 였으며

이번 포스트에서는 무명클래스 버튼이벤트 었습니다. 다음 포스팅에서도 다양한 이벤트을 포스팅 하겠습니다.

반응형
LIST
반응형
SMALL

▩ 버튼 이벤트(event) 처리란? ▩


버튼(button)을 클릭하였을 경우 이벤트가 발생(event) 합니다.

더 쉽게 말해서 버튼을 누르고 화면이 바뀌거나 작은 문구가 화면에 보여짐니다.

 

이번 포스트에서는 버튼 이벤트 누르고 작은 문구가(토스트) 화면에 뿌려지는 동작을 알아보겠습니다.

 

버튼이벤트 처리하는 방법에는 3가지 방법이 있습니다.

 

    1. XML파일에 이벤트 처리 메소드로 등록하는 방법입니다.

    2. 이벤트를 처리하는 객체를 생성하여 이벤트를 처리하는

        방법니다.

    3. 뷰 클래스의 이벤트 처리 메소드를 재정의하는 방법입니다.

 

【 이벤트 처리 객체를 이용하여 이벤트 처리하기

                                                --- 리스너 내부 클래스 】

 리스너 객체를 생성하는 세가지 방법을 알아보겠습니다.

   리스너 클래스를 내부 클래스로 정의하는 방법입니다.

   리스너 클래스를 무명 클래스로 정의하는 방법입니다.

   리스너 인터페이스를 액티비티 클래스에 구연하는 방법입니다.

 

  리스너 클래스를 내부 클래스로 정의해서 버튼 이벤트을  작동합니다. 

 

   1> ButtonEvent01 file생성합니다. next 누릅니다.

      ▶버튼 이벤트 버전은 상황따라서 설정이 가능합니다.낮은 버전을 선택합니다.

      ▶버튼 이벤트 프로젝트에 맞는 화면을 설정하시며 됩니다. 일반적으로 안드로이드

        공부할실때에는 빈프로젝트를 선택합니다.

      ▶버튼 이벤트 프로젝트 파일 생성과장 마지막 화면이 보여지며, finish 선택합니다.


 

  

   2> res/layout/activity_main.xml 만듭니다

 

 

 

3) 버튼이벤트 내부 클래스코드작성을 합니다.

 

    내부 클래스는 아래의 화면을 보시면 onCreate 상관없이

코드를 작업하신걸 보실수 있습니다.

 

- 내부 클래스 구연 -

class myinnerClass implements View.onClickListener{

public void onClick(View v){

Toast.makeText(getApplicationContext(),"버튼이 눌려졌습니다",

Toast.LENGTH_SHORT).show();

}

}

 

내부 클래스 구연을 보시다 시피, 어떤 버튼을 부착을 해도

실행이 가능합니다. 버튼 하나 하나에 이벤트 처리를 다르게

하고 싶으며, 내부 클래스 보다는 버튼 하나하나에 onClickListner

붙여줘야 합니다. 그건  포스트에서  무명클래스 작성해보 겠습니다.

 

 

 

Buton button = (Button)finVivewById(R.id.button);

                      생성하였습니다.

 

리고 MyinnerClass butListener = new MyinnerClass();

내부 클래스를 호출하였습니다.

 

그럼 button.setOnClickListener(butListener); 부착하시면 됩니다.

     

4>  버튼이벤트을 실행 합니다.

 

실행결과를 보시면 "버튼이 눌러졌습니다"라고 토글이 뿌려지는 걸 보실수 있습니다. 버튼을 눌려졌을때 결과입니다. 클릭 전 과 클릭 후를 보시면

더 쉽게 이해 하실수 있습니다.

 

 

버튼 이벤트는  내부 클래스로 코드를 작업을 하게 될 경우, 버튼을 여러개 만들시 코드를 내부 클래스에서 한번만 코드작업하여 소스가 길어는것을 예방할수 있습니다.

 

만약 버튼마다 이벤트 기능을 다르게 하고싶으면 내부클래스 코드작업은 적절하지않습니다.

 

이번 포스팅은 간단한 버튼이벤트 내부클래스 였습니다.

반응형
LIST
반응형
SMALL

▩ 커스텀 버튼의 특징을 알아보겠습니다. ▩

커스텀 버튼은  눌렀을때와 누르지 않았을때에 상태를 보여줍니다.

 

우선 첫번째,  Custombutton프로젝트 생성합니다.

 

두번째,  res/drawable 폴더에 두개의 그림 붙여넣기 합니다.

그리고 main.xml이라는 새로운 파일을 생성 합니다.

[코드작성- 그림에 대한 코드인식이라고 생각하면 됩니다..]

     

      <item android: drawable ="@drawable/btn2

           android:state_pressed ="true/> 

          버튼을 눌렀을때  그림표시을 나타냅니다.

 

      <item android:drawable="@drawable/btn1"/> 

            버튼 누르지 않은 상태 그림표시을 나타냅니다.

         

 

* 왼쪽 drawable 선택을 합니다. 그리고  마우스 오른쪽 버튼 누릅니다.

  그러면 ew -> drawable resource file 클릭합니다.

  fileName 입력하고  저장버튼을 누르며 됩니다. 

 

 

세번째, res/layout/activity_main.xml 파일을 생성합니다.

   Design 선택합니다.

   Button 이라고 적혀있는 위젯을 볼실수 있습니다.

   Button을 클릭한 상태에서 드래그 하여 붙여넣기 해주시면

   됩니다.  

  

   그리고 아래 화면에서 Design에서 text 화면을 클릭하시면

됩니다.

<Button

     android:id ="@+id/button"

     android:id:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:padding="10dp"  --> 이 코드는 없어도 무관합니다.

     android:onClick="onClick" --> onClick  메소드 호출할때 동작합니다.

     android:background="@drawable/main"/> --> 버튼에 그림을  붙여넣기입

                                                                   니다.

 

Button서 adroid:background ="@drawable/main/>

보면 @/drawable/main 은  res/drawale/main.xml 을 참조

하고 있는것을 보실수 있습니다.

 

   drawable에서도 코드를 작성해야합니다.

 

 

 

4. 최종적으로 onCreate()에서 코드를 작성합니다.

        아래 그림같이 코드로 작성하시며 됩니다.

 

public void onClick(View target){

  Toast.makeText(getApplicationContext(),"Beep Bop",

   Toast.LENGTH_SHORT).show();

  }

 

 

 

 

5. 커스텀 버튼 실행결과입니다.

   아래와같이 이미지를 보시면 왼쪽 그림 누르기 전  화면이고,

   오른쪽 그림은 보시다시피 누르기 후 화면입니다.

    색깔이 바뀌는걸 보실수 있습니다. 커스텀버튼 이벤트입니다.

          

 

 

 

Key point:   버튼을 생성하기 전에 두개의 그름을 drawable 부착하고, res/drawable/main 생성하여 두개의 사진에 각각의 명령을 부여합니다.

 

res/layout에서  버튼을 생성하여 android:background ="@drawable/main 을 불려옵니다.

 

오늘 포스팅은 간단하지만 버튼이 동작했을때와 안했을때 상태표시를 보여줍니다. 앱을 개발하는 개발자에게는 필요한 기능입니다.

 

반응형
LIST

+ Recent posts