관리 메뉴

Jsecurity

안드로이드 - 명화 선호도 투표 앱 만들기 본문

프로그래밍언어/Java_Language

안드로이드 - 명화 선호도 투표 앱 만들기

Great king 2019. 10. 21. 23:39

명화 이미지 첨부 파일 (/res/drawable에 복사하여 추가)

명화이미지.zip
1.01MB


명화 선호도 투표 앱 만들기

프로그램 설명

1. 화면설계를 테이블 레이아웃으로 설계한다.
2. 명화를 선택을 했을시 카운트수를 누적하는 계산을 처리한다.
3. 투표결과를 화면을 선택을 했을시 Intent 를 사용하여 데이터를 전송한다.
4. 투표결과를 보고 잘 처리했다는 메세지를 다시 리턴한다.
5. 투표결과 화면에서 최고의 투표수를 받은 화면을 보여준다.
6. 투표결과를 위 화면과 같이 해당 명화당 내용이 나올수 있도록 처리한다.

 


메인 액티비티 (activity_main.xml)

 

바깥 리니어레이아웃 안에 리니어레이아웃 4개로 구성 한 뒤, layout_weight를 3:3:3:1로 한다.


3개의 레이아웃에는 각각 3개의 이미지 뷰를 넣고 layout_weigh는 1:1:1로 한다.


이미지뷰에 적당한 간격으로 layout_margin(ex : 5dp)을 준다.

 

이미지뷰의 id는 iv1~iv9

버튼의 id는 btnResult로 한다.

 

Total

LinearLayout 4개, imageView 9개

boutton 1개

 


 

서브 액티비티 (result.xml)

 

최고 득표를 위한 LinearLayout 1개와 점수표와 버튼을 만들기 위해 TableRow 9개를 생성한다.


텍스트뷰의 id는 tv1~tv9

레이팅바의 id는 rbar1~rbar9

버튼의 id는 btnReturn으로 한다.

 

Total

LinearLayout 1개

TableRow 9개

TextView 10개

RatingBar 9개

imageView 1개

button 1개 

 

 

 


MainActivity.java

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		setTitle("명화 선호토 투표");
		
		//초기값 설정 ------------------------------------------------------
		final int[] voteCount = {0,0,0,0,0,0,0,0,0};
		//ImageView 위젯을 담을 객체선언
		ImageView[] image = new ImageView[9];
		Integer[] imageID = {
			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
		};
		final String[] imgName = {
			"독서하는 소녀",	
			"꽃장식 모자 소녀",	
			"부채를 든 소녀",	
			"이레느깡 단 베르양",	
			"잠자는 소녀",	
			"테라스의 두 자매",	
			"피아노 레슨",	
			"피아노 앞의 소녀들",	
			"해변에서",	
		};
		//초기값설정 ------------------------------------------------------
		
		//각 이미지뷰에 ClickListener 정의
		for(int i=0; i < imageID.length; i++) {
			final int idx = i;	//내부 클래스 사용위해 final 선언
			image[i] = (ImageView)findViewById(imageID[i]);
			image[i].setOnClickListener(new View.OnClickListener() {
				
				@Override
				public void onClick(View v) {
					voteCount[idx]++;	//투표수 counting
					//토스트 메시지 출력
					Toast.makeText(getApplicationContext(), imgName[idx] +"총 " + voteCount[idx] + " 표", Toast.LENGTH_SHORT).show();
				}
			});
		}
		
		//버튼 ClickListener 정의
		Button btnResult = (Button)findViewById(R.id.btnResult);
		btnResult.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//intent 선언
				Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
				
                //Data setting
				intent.putExtra("voteCount", voteCount);
				intent.putExtra("imgName", imgName);
				
                //ResultAcitivy 출력
				startActivity(intent);
				
			}
		});
		
	}
}

result.java

public class result extends AppCompatActivity {

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

        setTitle("투표 결과");

        //mainActivity에서 전달한 데이터 수령
        Intent intent = getIntent();
        int[] voteResult = intent.getIntArrayExtra("voteCount");
        String[] imageName = intent.getStringArrayExtra("imgName");

        //초기값 설정 ------------------------------------------------------
        TextView[] tv = new TextView[imageName.length];
        RatingBar[] rbar = new RatingBar[imageName.length];

        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.rbar1, R.id.rbar2, R.id.rbar3, R.id.rbar4, R.id.rbar5, R.id.rbar6, R.id.rbar7,R.id.rbar8, R.id.rbar9};

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


        for( int i = 0; i < voteResult.length; i++ ) {
            tv[i].setText(imageName[i]);
            rbar[i].setRating((float)voteResult[i]);
        }
        //초기값설정 ------------------------------------------------------


        TextView rtv1 = findViewById(R.id.rtv1);
        ImageView riv1 = findViewById(R.id.riv1);
        int max = -1;

        //이미지명, 최대 득표수 설정
        for( int i = 0; i < voteResult.length; i++ ) {
            if (max < voteResult[i]){
                max = voteResult[i];
            }
            
            //최대 득표된 이미지 출력
            if (voteResult[i] == max) {
                if(i == 0) { riv1.setImageResource(R.drawable.pic1); }
                else if(i == 1) { riv1.setImageResource(R.drawable.pic2); }
                else if(i == 2) { riv1.setImageResource(R.drawable.pic3); }
                else if(i == 3) { riv1.setImageResource(R.drawable.pic4); }
                else if(i == 4) { riv1.setImageResource(R.drawable.pic5); }
                else if(i == 5) { riv1.setImageResource(R.drawable.pic6); }
                else if(i == 6) { riv1.setImageResource(R.drawable.pic7); }
                else if(i == 7) { riv1.setImageResource(R.drawable.pic8); }
                else if(i == 8) { riv1.setImageResource(R.drawable.pic9); }
                rtv1.setText(imageName[i]); //이미지명 출력 
            }
        }

        // 버튼 ClickListener 정의
        Button btnReturn = (Button)findViewById(R.id.btnReturn);
        btnReturn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });
        
    }
}

 

 

Comments