[Android Studio] 간단한 투표앱 만들기
이번에는 안드로이드 스튜디오를 이용해서 간단한 투표앱을 만들어 보도록 하겠습니다.
꼭 필요한 것만 넣어서 간단하게 만들었습니다 ㅎㅎ
투표하고 싶은 친구의 사진을 터치 시 'ㅇㅇ에게 투표하였습니다.' 라는 문구가 뜨고
화장선거 투표 종료 버튼을 클릭 시 투표 결과 페이지로 넘어가게 됩니다.
투표 결과 페이지에서는 가장 많은 표를 받은 친구의 사진과 이름, 투표수를 나타낼 수 있게 했습니다
또한 돌아가기 버튼 터치 시 이전의 투표화면으로 돌아갈 수 있게 만들었습니다.
일단 시작 전에 앱 제작에 사용한 이미지의 링크를 달아둘게요
https://icon-icons.com/ko/pack/Netguru-Avatars-Pack/2630
Netguru Avatars Pack, 59 무료 아이콘 바 Netguru
icon-icons.com
icon-icons는 무료로 사용이 가능하지만 아이콘팩마다 사용가능한 범위가 다르니 사용 전에 미리 확인해보는 게 좋겠습니다.
원하는 이미지를 [res] - [drawable]에 붙여넣기하면 준비는 다 끝난겁니다
<activity_main.xml>
필요한 ImageView와 Button만을 사용해서 간단하게 만들었습니다.
화면의 위젯을 보기 좋게 배열하는 데에는 여러 방법이 있지만
이번에는 LinearLayout을 사용해서 이미지들을 화면에 맞게 배열했습니다.
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
Button btn;
int vCount[] =new int[6];
ImageView[] imgV = new ImageView[6];
int[] imgID = {R.id.img1, R.id.img2, R.id.img3, R.id.img4, R.id.img5, R.id.img6};
String Name[] = {"철민", "민수", "윤아","지영","은수","민영"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android:setTitle("회장선거 투표");
btn = (Button)findViewById(R.id.btn);
for (int i=0; i<imgID.length; i++) {
final int index;
index = i;
imgV[index] = (ImageView) findViewById(imgID[index]);
imgV[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
vCount[index]++;
Toast.makeText(getApplicationContext(), Name[index] + "에게 투표하였습니다.",
Toast.LENGTH_SHORT).show();
}
});
}
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), resultvote.class);
intent.putExtra("vCount", vCount);
intent.putExtra("Name", Name);
startActivity(intent);
}
});
}
}
배열을 사용해서 vCount에는 투표수를 기록, imgV[]에는 이미지를 보여주는 ImageView,
imgID에는 이미지에게 지정한 ID, Name[]에는 이름을 지정했습니다.
imgV의 이미지를 클릭시 vCount의 index의 수가 1씩 더해지게 되면서 투표수가 1씩 올라가게 됩니다.
또한 터치한 이미지 배열에 맞는 이름을 불러와 Toast로 'ㅇㅇ에게 투표하였습니다."라는 문구를 띄우게 했습니다.
버튼 클릭시 Intent를 사용해서 resultvote로 이동 및 putExtra로 투표수와 이름을 resultvote.java로 보내게됩니다.
간혹 startActivity(intent)를 빼먹는 경우도 많이 있는데 Intent를 실행하기 위해서는 startActivity가 꼭 필요합니다!
이제 투표 결과를 보여주는 resultvote 화면을 만들어 보겠습니다.
https://myyamyam001.tistory.com/11 ▲ 한 프로젝트 내에서 새로운 xml과 java 클래스 만드는 방법은 따로 글을 올려두었습니다 생성 방법을 모르시는 분들은 위의 링크로 들어가서 확인해주세요 |
<resultvote.xml>
투표수를 가장 많이 받은 친구의 사진을 보여주는 ImageView
그 친구의 이름과 받은 표의 수를 보여주는 TextView
그리고 이전화면으로 돌아가는 Button을 넣어서 간단하게 만들었습니다.
<resultvote.java>
public class resultvote extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.resultvote);
setTitle("투표 결과");
ImageView resImg = (ImageView) findViewById(R.id.resImg);
TextView resText = (TextView) findViewById(R.id.tv1);
int top = 0;
Intent intent = getIntent();
int[] rVote = intent.getIntArrayExtra("vCount");
String[] rName = intent.getStringArrayExtra("Name");
int rImg[] = {R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, R.drawable.pic6};
for (int i = 0; i<rVote.length; i++){
if(rVote[top] < rVote[i])
top=i;
}
rVote.toString();
resImg.setImageResource(rImg[top]);
resText.setText(rName[top]+"/"+ rVote[top]+"표");
Button btn= findViewById(R.id.rbtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
getIntArrayExtra, getStringArrayExtra로 투표화면에서 보낸 투표수와 이름을 받아와서
vCount는 rVote에 저장하고 Name은 rName에 저장합니다.
for문을 이용해서 투표수가 가장 많은 rVote를 구합니다.
top에는 가장 많이 받게된 투표수의 값이 들어가있는 걸 생각하시면
아래부터는 어렵지 않으실겁니다
마지막으로
finish()를 이용해 버튼 클릭 시 resultvote가 종료되면서 이전 투표 화면을 보여줍니다
java문이 많이 길지 않아서 하나씩 따라해보시면 어렵지 않게 완성하실 수 있을실 겁니다