유디의 공간정보·개발일기
5. 0713_ 로그인 layout 만들기, HashMap 사용하기 본문
'확인' 버튼 --> binding.button
이미지 --> binding.output1
텍스트 --> binding.output2
- new Dog( ) --> 강아지 객체를 ArrayList dogs에 넣음
- wrap-content : 내용물 크기에 맞춰짐
- LinearLayout(vertical)로 convert
* 속성창에서 orientation을 horizontal로 바꿀 수 있다.
- layout 안에 또 layout을 넣을 수 있음, 새로 추가 된 레이아웃은 남은 여유공간을 채운다.
- width : 가로 / 너비
height : 세로 / 높이
- vertical : 수직 / 위아래로
horizontal : 수평 / 좌우로
- layout을 여러 개 추가할 때 layout-weight에 1 값이 생기는데, 지우면 차곡차곡 붙일 수 있다.
- layout_gravity : 정렬
가운데 정렬 : center_horizontal 의 true값에 체크
- layout_margin : 레이아웃 선을 위아래옆 공간과 띄움
layout_marginTop : 위쪽과의 공간을 띄움
- padding : 내용물과의 공간을 띄움
- LinearLayout (horizontal) : 둘 다 wrap-content로, layout_gravity - center_horizontal true체크, layout_marginTop에 200dp
- LinearLayout (vertical) : 둘 다 wrap-content로
- input1/plainText : 180dp
- input2/plainText : wrap-content로, inputType - TextPassword 체크
- button : wrap-content/match-parent로
[MainActivity.java]
package com.example.test7;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.example.test7.databinding.ActivityMainBinding;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
//ArrayList<Dog> dogs = new ArrayList<Dog>();
ArrayList<Animal> dogs = new ArrayList<Animal>(); //인터페이스 Animal을 Dog,Cat에 각각 implements해주기
ArrayList<Animal> cats = new ArrayList<Animal>();
HashMap<String, ArrayList> animals = new HashMap<String, ArrayList>();
//위처럼 일일히 안만들고 하나로 합쳐 만들고 싶을 때
//HashMap<이름, 값> <--- 쌍으로 값이 들어감
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
System.out.println("onCreate 함수 호출됨");
//HashMap에 값 넣어주기
animals.put("강아지", dogs);
animals.put("고양이", cats);
//로그인 버튼을 누를 때 동작 예약 + createDog()를 사용할거니깐 메인함수 밖에가서 함수만들고 오기
binding.loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createDog();
}
});
binding.createCatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createCat();
}
});
//강아지찾기 버튼
binding.findDogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Dog dog = (Dog) dogs.get(0); //(Dog) : arraylist<Animal>에 넣어놨던 것에서 Dog크기로 다시 불러옴
//HashMap에 put으로 넣었던 값을 get으로 가져오기, ()안은 이름 key를 넣는다.
ArrayList outDogs = animals.get("강아지");
Dog dog = (Dog) outDogs.get(0);
binding.output1.setText("첫번째 강아지 이름 : " + dog.name);
}
});
//고양이찾기 버튼
binding.findCatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Cat cat = (Cat) cats.get(0);
//HashMap에 put으로 넣었던 값을 get으로 가져오기
ArrayList outCats = animals.get("고양이");
Cat cat = (Cat) outCats.get(0);
binding.output1.setText("첫번째 고양이 이름 : " + cat.name);
}
});
}
public void createCat() {
String name = binding.input1.getText().toString();
Cat cat = new Cat(name);
cats.add(cat);
binding.output1.setText("몇 마리? : " + cats.size());
}
public void createDog() { //새함수 만들때 메인 중괄호 밖에 쓰도록 중괄호 주의
String name = binding.input1.getText().toString();
Dog dog = new Dog(name);
dogs.add(dog);
System.out.println("강아지 : " + dogs.size());
binding.output1.setText("몇 마리? : " + dogs.size());
}
}
[Animal interface]
package com.example.test7;
public interface Animal {
}
[Dog class]
package com.example.test7;
public class Dog implements Animal {
String name;
Dog() {
}
Dog(String name) {
this.name = name;
}
public void cry() {
System.out.println("강아지가 울어요.");
}
}
[Cat class]
package com.example.test7;
public class Cat implements Animal {
String name;
Cat() {
}
Cat(String name) {
this.name = name;
}
public void cry() {
System.out.println("고양이가 울어요.");
}
}
'JAVA + Android Studio' 카테고리의 다른 글
6. 0715_ 리뷰, RadioGroup (0) | 2021.10.24 |
---|---|
4. 0712_ hint, if-else문으로 이미지 설정, ArrayList (0) | 2021.10.24 |
3. 0709_ Null check와 ArrayList를 적용한 버튼 활성화 (0) | 2021.10.23 |
2. 0708_ layout, Binding 설정, 버튼 클릭 시 이미지 변경 (0) | 2021.10.23 |
1. 0707_xml과 java파일, 버튼 만들기 (0) | 2021.10.21 |