버튼(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;
}
}
}
'안드로이드(Android)' 카테고리의 다른 글
| 6. 스크롤뷰(ScrollView), 스피너(spinner), 이미지 주소 삽입, 리스트뷰(ListView) (0) | 2017.03.21 |
|---|---|
| 5. 이미지뷰(ImageView), 스위치(Switch), 체크박스(CheckBox), 라디오버튼(RadioButton) (0) | 2017.03.20 |
| 4. Margin_Padding, Checkbox(체크박스), Layout(레이아웃), Toggle(토글), radioButton(라디오버튼) (0) | 2017.03.17 |
| 2. 폰트 크기 바꾸기, 이미지 삽입, 라이프 사이클, 텍스트뷰(TextView) (0) | 2017.03.15 |
| 1. Android Studio(안드로이드 스튜디오) 설치, genymotion(지니모션) 설치 (0) | 2017.03.14 |