ImageView

2023. 8. 9. 12:30Android Studio

이미지뷰와 버튼을 사용하여 버튼을 누르면

 

각 국가의 국기 이미지가 출력되는기능을 구현한 

 

어플을 만들어 볼것이다

<?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">

    <ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:src="@drawable/flag_korea"
        android:scaleType="centerInside"
        android:background="@drawable/ic_launcher_background"/>

    <Button
        android:id="@+id/b1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="호주"/>
    <Button
        android:id="@+id/b2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="벨기에"/>
    <Button
        android:id="@+id/b3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="캐나다"/>
    <Button
        android:id="@+id/b4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="대한민국"/>

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이미지값 얻어오기"
        android:backgroundTint="#FFFF0000"/>
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="국기 이미지"
        android:textColor="#FF000000"
        android:padding="16dp"/>

    <!-- 이미지뷰 사이즈를 wrap_content로 지정할때 주의할 점  -->
    <!-- 이미지뷰의 wrap_content를 보여지는 이미지의 사이즈가 아니라 원본 이미지 사이즈를 감쌀 사이즈로 설정됨   -->
    <!-- wrap_content일때만 사용하는 속성 - 보여지는 그림 사이즈로 뷰크기를 조정   -->
    <ImageView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:src="@drawable/flag_korea"
        android:adjustViewBounds="true"/>
</LinearLayout>
package com.mrhi2023.ex04imageview;

import androidx.appcompat.app.AppCompatActivity;

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

import java.util.Random;

public class MainActivity extends AppCompatActivity {

    // 화면에 보이는 뷰들을 참조하는 참조변수...가급적 멤버변수로....
    ImageView iv;
    Button btnAus, btnBel, btnCan, btnKor;

    int[] imgs= new int[]{
            R.drawable.flag_australia,
            R.drawable.flag_belgium,
            R.drawable.flag_canada,
            R.drawable.flag_china,
            R.drawable.flag_france,
            R.drawable.flag_germany,
            R.drawable.flag_ghana,
            R.drawable.flag_italy,
            R.drawable.flag_japan,
            R.drawable.flag_korea,
            R.drawable.flag_nepal,
            R.drawable.flag_russia,
            R.drawable.flag_usa
    };

    String[] nations= new String[]{
            "호주","벨기에","캐나다","중국","프랑스",
            "독일","가나","이탈리아","일본","대한민국",
            "네팔","러시아","미국"
    };

    int num=0;

    Button btn;
    TextView tv;

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

        iv= findViewById(R.id.iv);
        btnAus= findViewById(R.id.b1);
        btnBel= findViewById(R.id.b2);
        btnCan= findViewById(R.id.b3);
        btnKor= findViewById(R.id.b4);

        btnAus.setOnClickListener(listener);
        btnBel.setOnClickListener(listener);
        btnCan.setOnClickListener(listener);
        btnKor.setOnClickListener(listener);

        //이미지뷰를 클릭하는 것을 듣는 리스너 생성 및 설정
        iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                num++;
//                if(num>12) num=0;

                Random rnd= new Random();
                num= rnd.nextInt(13); //0~12
                iv.setImageResource(imgs[num]);
            }
        });


        btn= findViewById(R.id.btn);
        tv= findViewById(R.id.tv);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //이미지뷰가 보여주는 이미지값 얻어오기
                //이미지뷰는 본인이 보여주는 이미지의 resId를 리턴해주는 기능이 없음.
                tv.setText(nations[num]);
            }
        });

    }//onCreate method..

    View.OnClickListener listener= new View.OnClickListener() {
        //감시하고 있는 버튼이 클릭되면 자동으로 실행되는 콜백메소드
        @Override
        public void onClick(View view) {//매개변수 view : 클릭된 버튼의 참조변수값

            //클릭한 버튼이 누군지 구별하기 위해 그 버튼의 id값을 얻어오기
            int id= view.getId();
            if(id==R.id.b1) iv.setImageResource(R.drawable.flag_australia);
            else if(id==R.id.b2) iv.setImageResource(R.drawable.flag_belgium);
            else if(id==R.id.b3) iv.setImageResource(R.drawable.flag_canada);
            else if(id==R.id.b4) iv.setImageResource(R.drawable.flag_korea);

        }
    };

}//MainActivity class..

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

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