Widget 만들기

2023. 8. 9. 12:18Android Studio

윗 버튼을 누르면 Hello 글자가 nice to meet you 글자로 바뀌어 출력되고

 

누를때마다 숫자가 더해져서 출력되는 기능을 구현하고

 

밑 입력완료 버튼을 누르면 EditText 에 입력한 글자가 RESULT에 출력되는 위젯을 만들어 볼것이다

결과화면

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/aa"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textSize="40sp"
        android:textStyle="bold"
        android:gravity="center"/>

    <Button
        android:id="@+id/bb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"/>

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:hint="글씨를 입력하세요"
        android:inputType="text"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="입력완료"
        android:backgroundTint="#FF0F0FF0"/>

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="RESULT"
        android:gravity="center_horizontal"
        android:paddingTop="16dp"
        android:textSize="24sp"
        android:textStyle="bold"
        android:textColor="#FF000000"/>

</LinearLayout>
package com.tsj2023.ex03widget;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // 화면에 보이는 view들을 제어하는 참조변수는 가급적 멤버변수로...
    TextView tv;
    Button btn;

    int num=0;

    EditText et;

    Button btn2;

    TextView tvResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //여기서 시작됨

        //xml에서 만들어진 view 객체를 찾아와서 참조변수에 대입
        tv=this.findViewById(R.id.aa); //this = MainActivity
        btn=findViewById(R.id.bb); //this. 생략..

        //버튼이 클릭되었을때 반응하기.. 클릭에 반응하는 리스너객체 생성
        //View.OnClickListener listener= new View.OnClickListener(); //인터페이스는 new로 객체 생성 불가
        //인터페이스를 구현한 새로운 클래스를 설계해서 객체로 만들어 사용
        MyClickListener listener =new MyClickListener();

        //버튼에 클릭리스너 객체 붙이기
        btn.setOnClickListener(listener);


        et=findViewById(R.id.et);
        btn2=findViewById(R.id.btn);
        tvResult=findViewById(R.id.tv);

        //버튼이 클릭되면 반응하기 - 리스너 객체를 생성하면서 기능 구현 - 익명클래스
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //EditText에 써있는 글씨 얻어오기
                String s=et.getText().toString();
                //TextView에 얻어온 글씨를 보여주기
                tvResult.setText(s);
            }
        });


    }//oncreate method..

    //inner class..
    class MyClickListener implements View.OnClickListener {
        //감시하는 버튼이 클릭되면 자동으로 실행되는 콜백메소드
        @Override
        public void onClick(View view) {
            num++;
            tv.setText("Nice to meet you : " + num);
        }
    }

}//mainactivity

'Android Studio' 카테고리의 다른 글

CompoundButton  (0) 2023.08.09
ImageView  (0) 2023.08.09
TextView의 속성들  (0) 2023.08.01
안드로이드 스튜디오로 자바 GUI랑 똑같이 작업해보기  (0) 2023.07.26
안드로이드 스튜디오 첫 수업  (0) 2023.07.26