관리 메뉴

FU11M00N

[Android] intent와 rating bar를 이용한 명화 투표 기능 본문

Programming/Android

[Android] intent와 rating bar를 이용한 명화 투표 기능

호IT 2020. 11. 10. 01:15

- 문제 설명.

위와 같은 디자인이 나오고 가장 많이 받은 명화는 명화 사진과 명화 이름이 출력되도록 한다.

또한 ratingbar를 이용하여 명화가 투표를 받은 만큼 각각의 명화 이름에 맞게 별이 채워져야한다.

문제

 

 

- Result

메인 화면, 투표

명화 9개의 그림. 클릭하면 투표가 된다.

투표가 될 때 마다 Toast로 투표수와 명화의 이름이 출력된다.

현재 각각의 명화에 투표를 1개씩하고 잠자는 소녀는 5개를 한 상황.

 

결과 버튼

 

BTNRESULT를 누르면 투표 결과가 나오는 result 화면으로 넘어감.

결괏 값

또한 BUTTON 을 누르면 다시 Main 화면으로 돌아가고 바로 투표를 이어서 할 수있음.

결괏 값 2 

피아노 레슨과 피아노 앞의 소녀들의 투표수를 증가 시키고 BTNRESULT를 누른 결과.

- Code

- activity_main.xml Code

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3">

        <ImageView
            android:id="@+id/iv1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic1" />

        <ImageView
            android:id="@+id/iv2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic2" />

        <ImageView
            android:id="@+id/iv3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic3" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3">

        <ImageView
            android:id="@+id/iv4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic4" />

        <ImageView
            android:id="@+id/iv5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic5" />

        <ImageView
            android:id="@+id/iv6"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic6" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3">

        <ImageView
            android:id="@+id/iv7"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic7" />

        <ImageView
            android:id="@+id/iv8"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic8" />

        <ImageView
            android:id="@+id/iv9"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/pic9" />
    </LinearLayout>

    <Button
        android:id="@+id/btnResult"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="btnResult" />
</LinearLayout>

- MainActivity.java Code

package org.techtown.a2b_20201109_3;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    ImageView ivPic[] = new ImageView[9];
    int ivI[]= {R.id.iv1, R.id.iv2, R.id.iv3,R.id.iv4,R.id.iv5
            ,R.id.iv6,R.id.iv7,R.id.iv8,R.id.iv9};
    Button btnResult;

    String picName[] = {
            "독서하는 소녀",
            "꽃장식 모자 소녀",
            "부채를 든 소녀",
            "이레느깡 단 베르양",
            "잠자는 소녀",
            "테라스의 두 자매",
            "피아노 레슨",
            "피아노 앞의 소녀들",
            "해변에서"
    };

    int voteCount[] = new int[9];

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

        btnResult = findViewById(R.id.btnResult);
        for(int i=0; i<ivPic.length;i++){
            ivPic[i]= findViewById(ivI[i]);
        }

        for(int i=0; i<ivPic.length;i++){
            final int index = i;
            ivPic[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    voteCount[index]++;
                    Toast.makeText(getApplicationContext(), picName[index]+" : "+voteCount[index],Toast.LENGTH_SHORT).show();
                }
            });
        }

        btnResult.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(),Result.class);
                intent.putExtra("voteCount", voteCount);
                intent.putExtra("imageName",picName);

                startActivity(intent);
            }
        });
    }
}

- activity_result.xml Code

<?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="wrap_content"
    android:orientation="vertical"
    tools:context=".Result">

    <TextView
        android:id="@+id/imgName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="12"
        android:textSize="36sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/mainimg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            app:srcCompat="@drawable/pic1" />
    </LinearLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:stretchColumns="0">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="독서하는 소녀"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb1"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="꽃장식 모자 소녀"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb2"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="부채를 든 소녀"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb3"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="미래느깡 단 소녀"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb4"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="잠자는 소녀"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb5"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="테라스의 두 자매"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb6"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="피아노 레슨"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb7"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="피아노 앞의 소녀들"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb8"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="해변에서"
                android:textSize="18sp" />

            <RatingBar
                android:id="@+id/rtb9"
                style="@style/Widget.AppCompat.RatingBar.Small"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </TableRow>

    </TableLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnResult"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>

</LinearLayout>

- Result.java

package org.techtown.a2b_20201109_3;

import androidx.appcompat.app.AppCompatActivity;

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

    public class Result extends AppCompatActivity {

        Integer imageFileId [] ={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,
                R.drawable.pic4,R.drawable.pic5
                ,R.drawable.pic6,R.drawable.pic7,
                R.drawable.pic8,R.drawable.pic9 };

        Integer tvID[] = {R.id.tv1,R.id.tv2,R.id.tv3,R.id.tv4,R.id.tv5,
                R.id.tv6,R.id.tv7,R.id.tv8,R.id.tv9,};

        Integer rbarID[] = {R.id.rtb1,R.id.rtb2,R.id.rtb3,R.id.rtb4,R.id.rtb5,
                R.id.rtb6,R.id.rtb7,R.id.rtb8,R.id.rtb9};
        Button btnReturn;

        TextView imgName;
        ImageView mainimg;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        setTitle("투표 결과");
        int max=0;
        Intent intent = getIntent();

        int[] voteCount = intent.getIntArrayExtra("voteCount");
        String[] picName = intent.getStringArrayExtra("imageName");


        TextView  tv[] = new TextView[picName.length];
        RatingBar rbar [] = new RatingBar[picName.length];


        for(int i=0;i<voteCount.length;i++){
            tv[i]=findViewById(tvID[i]);
            rbar[i] = findViewById(rbarID[i]);
        }

        btnReturn = findViewById(R.id.btnResult);

        for(int i=0;i<voteCount.length;i++){
            tv[i]=findViewById(tvID[i]);
            rbar[i] = findViewById(rbarID[i]);
        }
        for(int i=0; i<voteCount.length;i++){
            tv[i].setText(picName[i]);
            rbar[i].setRating((float) voteCount[i]);

            imgName=findViewById(R.id.imgName);
            mainimg =findViewById(R.id.mainimg);

            if(max < voteCount[i]){
                max=voteCount[i];
                imgName.setText(picName[i]);
                mainimg.setImageResource((imageFileId[i]));
            }
        }
        btnReturn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }

    }

 

Comments