ImageView
2023. 8. 9. 12:30ㆍAndroid 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 |