ABOUT ME

Today
Yesterday
Total
  • [android] android 기본 위젯 익히기2
    app/android 2021. 10. 28. 17:19
    반응형

     

     

     

     

     

     

     

    버튼과 에디트텍스트

     

     

    버튼과 에디트텍스트는 사용자에게서 어떤 값을 입력받기 위한 가장 기본적인 위젯

     

    두 위젯은 view 클래스와 textView 클래스를 상속받으므로 비슷하게 사용 가능

     

     

     

    에디트텍스트

     

    <EditText
    	android=id"@+id/edittext1" />

     

     

    에디트 텍스트도 변수 선언하고 id값을 넣어 접근 가능

     

    변수선언

    - var myEdit : EditText

    위젯 대입

    - myEdit = findViewById<EditText>(R.id.edittext)

    입력 값 가져오기

    람다식안에 넣음

    - var myStr : String = myEdit.getText().toString()

     

     

     

     

     

     

    <예제> 초간단 계산기 만들기

     

     

     

     

    activity_main.xml

     

     

    <?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"
        tools:context=".MainActivity">
    
        <EditText
            android:id="@+id/Edit1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="숫자1"/>
    
        <EditText
            android:id="@+id/Edit2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="숫자2"/>
    
        <Button
            android:id="@+id/BtnAdd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="더하기"/>
    
        <Button
            android:id="@+id/BtnSub"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="빼기"/>
    
        <Button
            android:id="@+id/BtnMul"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="곱하기"/>
    
        <Button
            android:id="@+id/BtnDiv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="나누기"/>
    
        <TextView
            android:id="@+id/TextResult"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30dp"
            android:textColor="#FF0000"
            android:layout_margin="10dp"
            android:text="계산 결과 : "/>
    </LinearLayout>

     

     

    MainActivity.kt

     

     

    package kr.ac.dongyang.project4_11
    
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import kotlinx.android.synthetic.main.activity_main.*
    
    class MainActivity : AppCompatActivity() {
    
        lateinit var num1: String
        lateinit var num2: String
        var result: Int? = null
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            BtnAdd.setOnClickListener {
                num1 = Edit1.text.toString()
                num2 = Edit2.text.toString()
                result = Integer.parseInt(num1) + num2.toInt()
                TextResult.text = "계산결과 : " + result
            }
    
            BtnSub.setOnClickListener {
                num1 = Edit1.text.toString()
                num2 = Edit2.text.toString()
                result = Integer.parseInt(num1) - num2.toInt()
                TextResult.text = "계산결과 : " + result
            }
    
            BtnMul.setOnClickListener {
                num1 = Edit1.text.toString()
                num2 = Edit2.text.toString()
                result = Integer.parseInt(num1) * num2.toInt()
                TextResult.text = "계산결과 : " + result
            }
    
            BtnDiv.setOnClickListener {
                num1 = Edit1.text.toString()
                num2 = Edit2.text.toString()
                result = Integer.parseInt(num1) / num2.toInt()
                TextResult.text = "계산결과 : " + result
            }
        }
    }

     

     

    실행결과

     

     

     

     

     

     

     

    컴파운드 버튼

     

    라디오 버튼과 라디오그룹

     

    라디오버튼

    xml 속성이나 메소드가 체크박스와 거의 동일하지만 용도가 다름

    여러 개 중 하나만 선택해야 하는 경우에 사용

    -그러나 라디오버튼만 여러 개 나열하면 클릭하는 것마다 모두 중복 선택되므로 라디오그룹과 함께 사용

    -각 라디오 버튼 id 속성이 꼭 있어야 한다.

     

     

    activity_main.xml

     

     

    <?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="30dp"
        tools:context=".MainActivity">
    
        <RadioGroup
            android:id="@+id/rGroup1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="남성" />
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="여성" />
        </RadioGroup>
    
    </LinearLayout>

     

     

    실행결과

     

     

     

     

     

     

    이미지뷰와 이미지버튼

     

     

    이미지뷰 

    그림을 출력하는 위제

    그림을 넣거나 화면을 화려하게 구성할 때 사용한다

     

    src – 이미지의 경로를 나타냄

    maxHeight/maxWidth – 이미지의 크기를 지정함

    scaleType – 이미지의 확대/축소 방식을 지정

    – scaleType의 속성: matrix, fitXY, fitStart, fitEnd, center 등

    지정한 값에 따라 이미지를 확대/축소하는 방식이 결정

     

     

    사용하려는 그림파일은 res - drawable 폴더에 있어야한다!!!!!!!(중요)

     

     

     

    <예제> 애완동물 사진 보기 앱 만들기

     

     

     

    activity_main.xml

     

     

    <?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"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="선택을 시작하겠습니까?"
            android:textSize="20dp"/>
    
        <CheckBox
            android:id="@+id/ChkAgree"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="시작함" />
    
        <TextView
            android:id="@+id/Text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="좋아하는 애완동물은?"
            android:textSize="20dp"
            android:visibility="invisible"/>
    
        <RadioGroup
            android:id="@+id/Rgroup1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="invisible" >
    
            <RadioButton
                android:id="@+id/RdoDog"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="강아지" />
    
            <RadioButton
                android:id="@+id/RdoCat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="고양이" />
    
            <RadioButton
                android:id="@+id/RdoRabbit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="토끼" />
        </RadioGroup>
    
        <Button
            android:id="@+id/BtnOK"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="선택완료"
            android:visibility="invisible"/>
    
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/ImgPet"
            android:visibility="invisible"/>
    
    
    
    </LinearLayout>

     

     

     

    MainActivity.kt

     

    package kr.ac.dongyang.project4_2
    
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.view.View
    import android.widget.Toast
    import kotlinx.android.synthetic.main.activity_main.*
    import org.w3c.dom.Text
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            title = "애완동물 사진 보기"
    
            ChkAgree.setOnCheckedChangeListener { compoundButton, b ->
                if( ChkAgree.isChecked == true ) {
                    Text2.visibility = View.VISIBLE
                    Rgroup1.visibility = View.VISIBLE
                    BtnOK.visibility = View.VISIBLE
                    ImgPet.visibility = View.VISIBLE
            }   else {
                    Text2.visibility = View.VISIBLE
                    BtnOK.visibility = View.VISIBLE
                    ImgPet.visibility = View.VISIBLE
                }
            }
    
            BtnOK.setOnClickListener {
                when (Rgroup1.checkedRadioButtonId) {
                    R.id.RdoDog -> ImgPet.setImageResource(R.drawable.dog)
                    R.id.RdoCat -> ImgPet.setImageResource(R.drawable.cat)
                    R.id.RdoRabbit -> ImgPet.setImageResource(R.drawable.rabbit)
                    else -> Toast.makeText(applicationContext, "동물 먼저 선택하세요", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }

     

     

     

    실행결과

     

     

     

     

     

     

    완성 ***^&%^%^^^******

    반응형

    댓글

Designed by Tistory.