오늘은 안드로이드 예제 중 ratingbar를 이용한 예제를 해보려고 합니다. 이 예제를 통해서 우리가 배울 수 있는 부분은 TableLayout, RatingBar, Intent 입니다.
안드로이드 RatingBar 예제
Ratingbar는 SNS에서 즉 facebook과 같은 곳에서 좋아요를 눌러줄때 사용하는 것입니다. 요즘에는 아주 많이 사용하겠죠?
안드로이드 예제들도 대세를 즉 트렌드를 따라갑니다. 이런 RatingBar 예제는 알아두면 두고두고 써먹을 수 있을 것 같네요.
일단, 소스를 검토하기 전에 어떻게 동작하는지부터 알아보겠습니다. 먼저, 위 그림에서 좌측화면이 메인입니다. 명화가 총 9장이 나타나구요.
이중에서 하나를 선택하면, 투표를 했다는 Toast가 발생합니다. 그리고 ‘투표종료’ 버튼을 누르게 되면, 위 그림에서 우측 화면으로 이동하게 되며, 이전 화면에서 클릭한 횟수가 RatingBar로 표기됩니다. ‘돌아가기’ 버튼을 누르면 이전 화면으로 돌아가게 되어있습니다.
왼쪽 화면은 MainActivity.java이고, 오른쪽은 Main2Activity.java파일입니다. 이 어플리케이션은 총 두개의 자바 파일이 필요합니다.
아래는 소스 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | package com.cookandroid.project10_2; import android.app.Activity; 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 Activity implements View.OnClickListener { // 9개의 이미지버튼 ID 배열 int 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 }; String imgName[] = { "독서하는 소녀", "꽃장식 모자 소녀", "부채를 든 소녀", "이레느깡 단 베르양", "잠자는 소녀", "테라스의 두 자매", "피아노 레슨", "피아노 앞의 소녀들", "해변에서" }; ImageView mImage[]; int voteCount[]; Button mFinish; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setTitle("명화 선호도 투표"); voteCount = new int[9]; // for (int i = 0; i < 9; i++) // voteCount[i] = 0; // 9개의 이미지 버튼 객체배열 mImage = new ImageView[9]; for (int index = 0; index < imageId.length; index++) { mImage[index] = (ImageView) findViewById(imageId[index]); mImage[index].setOnClickListener(this); } mFinish = (Button) findViewById(R.id.btnResult); mFinish.setOnClickListener(this); } @Override public void onClick(View view) { int index = 0; switch (view.getId()) { case R.id.iv1: index = 0; break; case R.id.iv2: index = 1; break; case R.id.iv3: index = 2; break; case R.id.iv4: index = 3; break; case R.id.iv5: index = 4; break; case R.id.iv6: index = 5; break; case R.id.iv7: index = 6; break; case R.id.iv8: index = 7; break; case R.id.iv9: index = 8; break; case R.id.btnResult: Intent intent = new Intent(getApplicationContext(), Main2Activity.class); intent.putExtra("VoteCount", voteCount); intent.putExtra("ImageName", imgName); startActivity(intent); break; } if(v.getId() != R.id.btnResult) { // 투표수 증가. voteCount[index]++; Toast.makeText(getApplicationContext(), imgName[index] + ": 총 " + voteCount[index] + " 표", Toast.LENGTH_SHORT).show(); } } } Colored by Color Scripter cs | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package com.cookandroid.project10_2; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RatingBar; import android.widget.TextView; public class Main2Activity extends Activity { TextView mTextView[]; RatingBar mRating[]; Button mReturn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); setTitle("투표 결과"); // 앞 화면에서 보낸 투표 결과 값을 받는다. Intent intent = getIntent(); int[] voteResult = intent.getIntArrayExtra("VoteCount"); String[] imageName = intent.getStringArrayExtra("ImageName"); // 9개의 TextView, RatingBar 객체배열 mTextView = new TextView[imageName.length]; mRating = new RatingBar[imageName.length]; // 9개의 TextView, RatingBar ID 배열 int 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 }; int 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 }; // TextView, RatingBar 개체 찾기. for (int i = 0; i < voteResult.length; i++) { mTextView[i] = (TextView) findViewById(tvID[i]); mRating[i] = (RatingBar) findViewById(rbarID[i]); } // 각 TextVeiw 및 RatingBar에 넘겨 받은 값을 반영. for (int i = 0; i < voteResult.length; i++) { mTextView[i].setText(imageName[i]); mRating[i].setRating((float) voteResult[i]); } mReturn = (Button) findViewById(btnReturn); mReturn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { finish(); //화면 종료 } }); } } Colored by Color Scripter cs | cs |
<Main2Activity.java>
MainActivity.java와 Main2Activity.java 파일만 복사해서 붙여놓았습니다. 이대로만 하시면 될 것 같구요.
나머지 소스들은 아래 압축파일을 확인해보시면 될것 같습니다. 그리고 압축파일은 안드로이드 스튜디오에서 만든 프로젝트입니다.
'[미네르바's IT] > [미네르바's 안드로이드]' 카테고리의 다른 글
안드로이드 스튜디오 단축키 모음 파일 다운 가능 (0) | 2017.07.11 |
---|---|
자바 별찍기 거꾸로 찍는것도 포함 (0) | 2017.07.03 |
안드로이드 이클립스 ADT 에러 (2) | 2017.06.27 |
안드로이드 avd read-only file system 수정하는 방법 (0) | 2017.06.26 |
adb 명령어 모음 (0) | 2017.06.23 |