버튼(Button)


xml로 만드는 방법

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_01.Button_01Activity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="9dp"
android:layout_marginTop="15dp"
android:text="OK"
/>
</RelativeLayout>



java로 만드는 방법


package org.android.soldesk.button_02;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class Button_02Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 액티비티 생성자에 호출되는 메소드로 초기 화면을 설정한다

// setContentView(R.layout.activity_button_02);

LinearLayout container = new LinearLayout(this);
container.setOrientation(LinearLayout.VERTICAL);

Button bb1 = new Button(this);
bb1.setText("첫번째 버튼");

container.addView(bb1);

Button bb2 = new Button(this);
bb2.setText("두두번째 버튼");

container.addView(bb2);

Button bb3 = new Button(this);
bb3.setText("세세세번째 버튼");

container.addView(bb3);


setContentView(container);
}
}
xmlns:android : XML 이름 공간의 선언으로 안드로이드 도구에
android 이름에 정의된 속성들을 참조하려고
한다는 것을 지정한다 XML 화일에서 항상
최외각 태그는 이 속성을 정의 해야 한다.



xml java로 코드 수정하기


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.button_3.Button_3Activity">

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="첫번째 버튼"

/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button02"
android:text="두두번째 버튼"

/>

</LinearLayout>

<수정 전 xml로 만들어진 모습>


package org.android.soldesk.button_3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;

public class Button_3Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_3);


Button bb1 = (Button)findViewById(R.id.button01);
bb1.setText("코드에서 바꾼 버튼");

Button bb2 = (Button)findViewById(R.id.button02);
bb2.setEnabled(false);
}
}

<java로 수정한 모습>



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_04.Button_04Activity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView01"
android:text="@string/hello_world"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button01"
android:text="Press this Button!!!"
android:layout_marginTop="51dp"
android:layout_below="@id/textView01"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"

/>

<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/analogClock"
android:layout_centerVertical="true"
android:layout_alignParentRight="@+id/button01"
android:layout_alignParentEnd="@+id/button01"

/>

</RelativeLayout>

res > values > strings.xml 더블 클릭


<string name="hello_world">아름다운 대한민국</string>

위에 내용을 추가해주세요.


<실행 모습>

참고 사이트 : http://freehoon.tistory.com/entry/안드로이드-뷰그룹-RelativeLayout



버튼에 이벤트 넣기


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_event_01.Button_Event_01Activity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCancel"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnOK"
android:text="Cancel"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnName"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnCancel"
android:text="Name"
/>

</RelativeLayout>


package org.android.soldesk.button_event_01;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;

public class Button_Event_01Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button__event_01);

Button btnOK = (Button)findViewById(R.id.btnOK);
Button btnCancel = (Button)findViewById(R.id.btnCancel);
Button btnName = (Button)findViewById(R.id.btnName);

btnOK.setOnClickListener(new ButtonHandler());
btnCancel.setOnClickListener(new ButtonHandler());
btnName.setOnClickListener(new ButtonHandler());
}
}


package org.android.soldesk.button_event_01;

import android.util.Log;
import android.view.View;

/**
* Created by soldesk on 2017-03-16.
*/

class ButtonHandler implements View.OnClickListener {

public void onClick(View v) {

switch (v.getId())
{
case R.id.btnOK:
Log.i("MyButton","OK~~~~~~");
break;

case R.id.btnCancel:
Log.i("MyButton","Cancel^^^^^^^^^");
break;

case R.id.btnName:
Log.i("MyButton","Name@@@@@@@");
break;
}
}
}

하단에 Android Monitor 클릭

Show only selected application > Edit Filter Configuration 클릭


Name : SBS

Tag : MyButton

Level : Info

설정하고 OK 클릭


Info로 설정해줍니다.


버튼을 클릭할때마다 이벤트가 모니터에 이벤트가 나옵니다.



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_event_2.Button_Event_2Activity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCancel"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnOK"
android:text="Cancel"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnName"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnCancel"
android:text="Name"
/>

</RelativeLayout>


package org.android.soldesk.button_event_2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class Button_Event_2Activity extends AppCompatActivity implements View.OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button__event_2);

Button btnOK = (Button) findViewById(R.id.btnOK);
Button btnCancel = (Button) findViewById(R.id.btnCancel);
Button btnName = (Button) findViewById(R.id.btnName);

btnOK.setOnClickListener(this);
btnCancel.setOnClickListener(this);
btnName.setOnClickListener(this);

}

@Override
public void onClick(View v) {

switch (v.getId())
{
case R.id.btnOK:
Log.i("Mybtn","OK~~~~~~~");
break;

case R.id.btnCancel:
Log.i("Mybtn","Cancel^^^^^^^");
break;

case R.id.btnName:
Log.i("Mybtn","Name@@@@");
break;
}
}
}

this를 사용하면 Handler를 만들지 않아도 실행 가능합니다.


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_event_3.Button_Event_3Activity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCancel"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnOK"
android:text="Cancel"
/>

</RelativeLayout>


package org.android.soldesk.button_event_3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class Button_Event_3Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button__event_3);

Button btnOK = (Button) findViewById(R.id.btnOK);
Button btnCancel = (Button) findViewById(R.id.btnCancel);


btnOK.setOnClickListener(new MyButtonHandler());
btnCancel.setOnClickListener(new MyButtonHandler());
}

private class MyButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {

switch (v.getId())
{
case R.id.btnOK:
Log.i("Mybtn","OK~~~~~~~");
break;

case R.id.btnCancel:
Log.i("Mybtn","Cancel^^^^^^^");
break;
}
}
}
}



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.button_event_4.Button_Event_4Activity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCancel"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnOK"
android:text="Cancel"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnName"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnCancel"
android:text="Name"
/>


</RelativeLayout>


package org.android.soldesk.button_event_4;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class Button_Event_4Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button__event_4);


Button btnOK = (Button)findViewById(R.id.btnOK);
Button btnCancel = (Button)findViewById(R.id.btnCancel);
Button btnName = (Button)findViewById(R.id.btnName);

btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("king","OOk~~~~~");
}
});

btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("king","Cancel$$$$$$$");
}
});

btnName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("king","Name@@@@");
}
});
}
}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="org.android.soldesk.button_event_5.Button_Event_5Activity">

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton01"
android:onClick="onClickOK"
android:src="@drawable/a316"
/>

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton02"
android:onClick="onClickOK"
android:src="@drawable/b316"
/>

</LinearLayout>


package org.android.soldesk.button_event_5;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class Button_Event_5Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button__event_5);
}

public void onClickOK(View v)
{
switch (v.getId())
{
case R.id.imageButton01:
Log.i("ImageButton","OK~~~~~");
Toast.makeText(getApplicationContext(), "버튼 OK",
Toast.LENGTH_SHORT).show();
break;

case R.id.imageButton02:
Log.i("ImageButton","Cancel~~~~~");
Toast.makeText(getApplicationContext(), "버튼 Cancel",
Toast.LENGTH_LONG).show();
break;
}
}
}



마지막으로 버튼 기능을 전부다 넣어서 테스트


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.android.soldesk.test.TestActivity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnOK"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnCancel"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnOK"
android:text="Cancel"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnName"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnCancel"
android:text="Name"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnTest"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnName"
android:text="Test"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnTest1"
android:layout_alignParentLeft="true"
android:layout_below="@id/btnTest"
android:text="Test1"
/>

</RelativeLayout>


package org.android.soldesk.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class TestActivity extends AppCompatActivity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);

Button btnOK = (Button) findViewById(R.id.btnOK);
Button btnCancel = (Button) findViewById(R.id.btnCancel);
Button btnName = (Button) findViewById(R.id.btnName);
Button btnTest = (Button) findViewById(R.id.btnTest);
Button btnTest1 = (Button)findViewById(R.id.btnTest1);

btnTest1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("MyButton","test1~~~~~~");
Toast.makeText(getApplicationContext(), "test1~~~~",
Toast.LENGTH_SHORT).show();
}
});

btnOK.setOnClickListener(new ButtonHandler(this));
btnCancel.setOnClickListener(new aaa());
btnName.setOnClickListener(this);
btnTest.setOnClickListener(new MyButtonHandler());
}

public void onClick(View v) {
switch (v.getId()) {
case R.id.btnName:
Log.i("MyButton", "Name@@@@");
Toast.makeText(getApplicationContext(), "name~~~~",
Toast.LENGTH_SHORT).show();
break;

}
}

private class MyButtonHandler implements View.OnClickListener {

public void onClick(View v) {

switch (v.getId()) {
case R.id.btnTest:
Log.i("MyButton", "test~~~~~~~");
Toast.makeText(getApplicationContext(), "test~~~~",
Toast.LENGTH_SHORT).show();
break;
}
}
}
}


package org.android.soldesk.test;

import android.util.Log;
import android.view.View;
import android.widget.Toast;

/**
* Created by soldesk on 2017-03-16.
*/

class aaa implements View.OnClickListener {

public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCancel:
Log.i("MyButton", "Cancel~~~~");
Toast.makeText(v.getContext(),"cancel",Toast.LENGTH_SHORT).show();
break;
}
}
}


package org.android.soldesk.test;

import android.util.Log;
import android.view.View;
import android.widget.Toast;

/**
* Created by soldesk on 2017-03-16.
*/

class ButtonHandler implements View.OnClickListener {

TestActivity kkk = null;

public ButtonHandler(TestActivity butt) {
kkk = butt;
}

public void onClick(View v) {

switch (v.getId()) {
case R.id.btnOK:
Log.i("MyButton", "OK~~~~~~");
Toast.makeText(kkk.getApplicationContext(),"ok",Toast.LENGTH_SHORT).show();
break;
}
}
}

+ Recent posts